diff --git a/CHANGELOG.md b/CHANGELOG.md index 990c528d3..b375f5ed5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,42 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.55.5](https://source.mapcomplete.org/MapComplete/MapComplete/compare/v0.55.4...v0.55.5) (2025-08-19) + + +### Bug Fixes + +* fix rendering of 'scissors' icon when splitting way ([4a63ca8](https://source.mapcomplete.org/MapComplete/MapComplete/commits/4a63ca8cb63a7a556f745edcf50382722238b8a6)) +* fix small background crashes ([a073b9d](https://source.mapcomplete.org/MapComplete/MapComplete/commits/a073b9de94bb0295a5828224c3b6a5fb59e69fa4)) + + +### Theme improvements + +* **food:** collapsable group now has icons of supported diets ([2475567](https://source.mapcomplete.org/MapComplete/MapComplete/commits/24755670cc1576ae0477fff8655cfc824ecd2071)) +* **pets:** attempt to fix build ([b74c0d2](https://source.mapcomplete.org/MapComplete/MapComplete/commits/b74c0d2768288e0039b45b3be3198b7baebd454c)) +* **rolling_stock:** add snap to 'railway' function ([06da7a0](https://source.mapcomplete.org/MapComplete/MapComplete/commits/06da7a0cf48976ae6df5cf5e9d941c55f10d6328)) +* **width:** add more editing options ([01e713b](https://source.mapcomplete.org/MapComplete/MapComplete/commits/01e713b1e5ab074aecb5a9d02d3a5f78dcbb2b4b)) + +### [0.55.4](https://source.mapcomplete.org/MapComplete/MapComplete/compare/v0.55.3...v0.55.4) (2025-08-19) + +### [0.55.3](https://source.mapcomplete.org/MapComplete/MapComplete/compare/v0.55.2...v0.55.3) (2025-08-19) + + +### Bug Fixes + +* fix crash in collection times picker ([e2fc678](https://source.mapcomplete.org/MapComplete/MapComplete/commits/e2fc678ec9e694578927f0c7aeab86a0298041d4)) +* fix statistics ([b61bc6d](https://source.mapcomplete.org/MapComplete/MapComplete/commits/b61bc6de7cb66fa5fdadb21067f80fb29cd5ecc9)) +* fix studio ([db9c5b2](https://source.mapcomplete.org/MapComplete/MapComplete/commits/db9c5b233fbea764a1055e98c800ae29a51e5a53)) + +### [0.55.2](https://source.mapcomplete.org/MapComplete/MapComplete/compare/v0.55.1...v0.55.2) (2025-08-15) + + +### Bug Fixes + +* fix [#2495](https://source.mapcomplete.org/MapComplete/MapComplete/issues/2495) ([0452c84](https://source.mapcomplete.org/MapComplete/MapComplete/commits/0452c84520e564a18164726faee0e5447ec7b602)) +* fix crash in collection times picker ([e2fc678](https://source.mapcomplete.org/MapComplete/MapComplete/commits/e2fc678ec9e694578927f0c7aeab86a0298041d4)) +* fix statistics ([b61bc6d](https://source.mapcomplete.org/MapComplete/MapComplete/commits/b61bc6de7cb66fa5fdadb21067f80fb29cd5ecc9)) + ### [0.55.1](https://source.mapcomplete.org/MapComplete/MapComplete/compare/v0.54.7...v0.55.1) (2025-08-13) diff --git a/Docs/BuiltinIndex.md b/Docs/BuiltinIndex.md index ac37752c4..ea029fa04 100644 --- a/Docs/BuiltinIndex.md +++ b/Docs/BuiltinIndex.md @@ -103,6 +103,7 @@ - postboxes - postoffices - public_bookcase + - railway - rainbow_crossings - reception_desk - recycling diff --git a/Docs/BuiltinQuestions.md b/Docs/BuiltinQuestions.md index 55aa1b074..64592f8dd 100644 --- a/Docs/BuiltinQuestions.md +++ b/Docs/BuiltinQuestions.md @@ -194,7 +194,7 @@ _This tagrendering has no question and is thus read-only_ *{image_carousel()}{image_upload()}* -This tagRendering is used in 134 layers: [advertising](./Layers/advertising.md) [aerialway](./Layers/aerialway.md) [all_streets](./Layers/all_streets.md) [ambulancestation](./Layers/ambulancestation.md) [animal_shelter](./Layers/animal_shelter.md) [assembly_point](./Layers/assembly_point.md) [assisted_repair](./Layers/assisted_repair.md) [atm](./Layers/atm.md) [bank](./Layers/bank.md) [barrier](./Layers/barrier.md) [bbq](./Layers/bbq.md) [beehive](./Layers/beehive.md) [bench_at_pt](./Layers/bench_at_pt.md) [bicycle_counter](./Layers/bicycle_counter.md) [bicycle_library](./Layers/bicycle_library.md) [bicycle_rental](./Layers/bicycle_rental.md) [bike_cafe](./Layers/bike_cafe.md) [bike_cleaning](./Layers/bike_cleaning.md) [bike_parking](./Layers/bike_parking.md) [bike_repair_station](./Layers/bike_repair_station.md) [bike_themed_object](./Layers/bike_themed_object.md) [binocular](./Layers/binocular.md) [birdhide](./Layers/birdhide.md) [brothel](./Layers/brothel.md) [car_rental](./Layers/car_rental.md) [caravansites](./Layers/caravansites.md) [charging_station](./Layers/charging_station.md) [cinema](./Layers/cinema.md) [climbing_route](./Layers/climbing_route.md) [clock](./Layers/clock.md) [crossings](./Layers/crossings.md) [cyclestreets](./Layers/cyclestreets.md) [cyclist_waiting_aid](./Layers/cyclist_waiting_aid.md) [defibrillator](./Layers/defibrillator.md) [disaster_response](./Layers/disaster_response.md) [dog_toilet](./Layers/dog_toilet.md) [dogpark](./Layers/dogpark.md) [dumpstations](./Layers/dumpstations.md) [elevator](./Layers/elevator.md) [elongated_coin](./Layers/elongated_coin.md) [entrance](./Layers/entrance.md) [extinguisher](./Layers/extinguisher.md) [fire_station](./Layers/fire_station.md) [firepit](./Layers/firepit.md) [fitness_centre](./Layers/fitness_centre.md) [fitness_station](./Layers/fitness_station.md) [food_courts](./Layers/food_courts.md) [governments](./Layers/governments.md) [grave](./Layers/grave.md) [guidepost](./Layers/guidepost.md) [hackerspace](./Layers/hackerspace.md) [hydrant](./Layers/hydrant.md) [information_board](./Layers/information_board.md) [insect_hotel](./Layers/insect_hotel.md) [item_with_image](./Layers/item_with_image.md) [kerbs](./Layers/kerbs.md) [lighthouse](./Layers/lighthouse.md) [love_hotel](./Layers/love_hotel.md) [map](./Layers/map.md) [mobility_hub](./Layers/mobility_hub.md) [mountain_rescue](./Layers/mountain_rescue.md) [nature_reserve](./Layers/nature_reserve.md) [nesting_site](./Layers/nesting_site.md) [observation_tower](./Layers/observation_tower.md) [outdoor_seating](./Layers/outdoor_seating.md) [parcel_lockers](./Layers/parcel_lockers.md) [parking](./Layers/parking.md) [parking_spaces](./Layers/parking_spaces.md) [parking_ticket_machine](./Layers/parking_ticket_machine.md) [picnic_table](./Layers/picnic_table.md) [play_forest](./Layers/play_forest.md) [playground](./Layers/playground.md) [playground_equipment](./Layers/playground_equipment.md) [police](./Layers/police.md) [police_call_box](./Layers/police_call_box.md) [postboxes](./Layers/postboxes.md) [postoffices](./Layers/postoffices.md) [public_bookcase](./Layers/public_bookcase.md) [rainbow_crossings](./Layers/rainbow_crossings.md) [reception_desk](./Layers/reception_desk.md) [recycling](./Layers/recycling.md) [route_marker](./Layers/route_marker.md) [shelter](./Layers/shelter.md) [ski_piste](./Layers/ski_piste.md) [slow_roads](./Layers/slow_roads.md) [souvenir_note](./Layers/souvenir_note.md) [speed_camera](./Layers/speed_camera.md) [sport_pitch](./Layers/sport_pitch.md) [stairs](./Layers/stairs.md) [street_lamps](./Layers/street_lamps.md) [stripclub](./Layers/stripclub.md) [surveillance_camera](./Layers/surveillance_camera.md) [tactile_map](./Layers/tactile_map.md) [tactile_model](./Layers/tactile_model.md) [ticket_machine](./Layers/ticket_machine.md) [ticket_validator](./Layers/ticket_validator.md) [tool_library](./Layers/tool_library.md) [trail](./Layers/trail.md) [transit_stops](./Layers/transit_stops.md) [trolley_bay](./Layers/trolley_bay.md) [vending_machine](./Layers/vending_machine.md) [viewpoint](./Layers/viewpoint.md) [village_green](./Layers/village_green.md) [waste_basket](./Layers/waste_basket.md) [waste_disposal](./Layers/waste_disposal.md) [windpump](./Layers/windpump.md) [windturbine](./Layers/windturbine.md) [charge_point](./Layers/charge_point.md) [climbing_area](./Layers/climbing_area.md) [cycleways_and_roads](./Layers/cycleways_and_roads.md) [dentist](./Layers/dentist.md) [ghostsign](./Layers/ghostsign.md) [physiotherapist](./Layers/physiotherapist.md) [sauna](./Layers/sauna.md) [school](./Layers/school.md) [shower](./Layers/shower.md) [souvenir_coin](./Layers/souvenir_coin.md) [sports_centre](./Layers/sports_centre.md) [toilet](./Layers/toilet.md) [indoors](./Layers/indoors.md) [cafe_pub](./Layers/cafe_pub.md) [campsite](./Layers/campsite.md) [climbing_gym](./Layers/climbing_gym.md) [doctors](./Layers/doctors.md) [food](./Layers/food.md) [pharmacy](./Layers/pharmacy.md) [shops](./Layers/shops.md) [tourism_accomodation](./Layers/tourism_accomodation.md) [visitor_information_centre](./Layers/visitor_information_centre.md) [ice_cream](./Layers/ice_cream.md) [bench](./Layers/bench.md) [historic_rolling_stock](./Layers/historic_rolling_stock.md) [historic_aircraft](./Layers/historic_aircraft.md) [drinking_water](./Layers/drinking_water.md) +This tagRendering is used in 135 layers: [advertising](./Layers/advertising.md) [aerialway](./Layers/aerialway.md) [all_streets](./Layers/all_streets.md) [ambulancestation](./Layers/ambulancestation.md) [animal_shelter](./Layers/animal_shelter.md) [assembly_point](./Layers/assembly_point.md) [assisted_repair](./Layers/assisted_repair.md) [atm](./Layers/atm.md) [bank](./Layers/bank.md) [barrier](./Layers/barrier.md) [bbq](./Layers/bbq.md) [beehive](./Layers/beehive.md) [bench_at_pt](./Layers/bench_at_pt.md) [bicycle_counter](./Layers/bicycle_counter.md) [bicycle_library](./Layers/bicycle_library.md) [bicycle_rental](./Layers/bicycle_rental.md) [bike_cafe](./Layers/bike_cafe.md) [bike_cleaning](./Layers/bike_cleaning.md) [bike_parking](./Layers/bike_parking.md) [bike_repair_station](./Layers/bike_repair_station.md) [bike_themed_object](./Layers/bike_themed_object.md) [binocular](./Layers/binocular.md) [birdhide](./Layers/birdhide.md) [brothel](./Layers/brothel.md) [car_rental](./Layers/car_rental.md) [caravansites](./Layers/caravansites.md) [charging_station](./Layers/charging_station.md) [cinema](./Layers/cinema.md) [climbing_route](./Layers/climbing_route.md) [clock](./Layers/clock.md) [crossings](./Layers/crossings.md) [cyclestreets](./Layers/cyclestreets.md) [cyclist_waiting_aid](./Layers/cyclist_waiting_aid.md) [defibrillator](./Layers/defibrillator.md) [disaster_response](./Layers/disaster_response.md) [dog_toilet](./Layers/dog_toilet.md) [dogpark](./Layers/dogpark.md) [dumpstations](./Layers/dumpstations.md) [elevator](./Layers/elevator.md) [elongated_coin](./Layers/elongated_coin.md) [entrance](./Layers/entrance.md) [extinguisher](./Layers/extinguisher.md) [fire_station](./Layers/fire_station.md) [firepit](./Layers/firepit.md) [fitness_centre](./Layers/fitness_centre.md) [fitness_station](./Layers/fitness_station.md) [food_courts](./Layers/food_courts.md) [governments](./Layers/governments.md) [grave](./Layers/grave.md) [guidepost](./Layers/guidepost.md) [hackerspace](./Layers/hackerspace.md) [hydrant](./Layers/hydrant.md) [information_board](./Layers/information_board.md) [insect_hotel](./Layers/insect_hotel.md) [item_with_image](./Layers/item_with_image.md) [kerbs](./Layers/kerbs.md) [lighthouse](./Layers/lighthouse.md) [love_hotel](./Layers/love_hotel.md) [map](./Layers/map.md) [mobility_hub](./Layers/mobility_hub.md) [mountain_rescue](./Layers/mountain_rescue.md) [nature_reserve](./Layers/nature_reserve.md) [nesting_site](./Layers/nesting_site.md) [observation_tower](./Layers/observation_tower.md) [outdoor_seating](./Layers/outdoor_seating.md) [parcel_lockers](./Layers/parcel_lockers.md) [parking](./Layers/parking.md) [parking_spaces](./Layers/parking_spaces.md) [parking_ticket_machine](./Layers/parking_ticket_machine.md) [picnic_table](./Layers/picnic_table.md) [play_forest](./Layers/play_forest.md) [playground](./Layers/playground.md) [playground_equipment](./Layers/playground_equipment.md) [police](./Layers/police.md) [police_call_box](./Layers/police_call_box.md) [postboxes](./Layers/postboxes.md) [postoffices](./Layers/postoffices.md) [public_bookcase](./Layers/public_bookcase.md) [railway](./Layers/railway.md) [rainbow_crossings](./Layers/rainbow_crossings.md) [reception_desk](./Layers/reception_desk.md) [recycling](./Layers/recycling.md) [route_marker](./Layers/route_marker.md) [shelter](./Layers/shelter.md) [ski_piste](./Layers/ski_piste.md) [slow_roads](./Layers/slow_roads.md) [souvenir_note](./Layers/souvenir_note.md) [speed_camera](./Layers/speed_camera.md) [sport_pitch](./Layers/sport_pitch.md) [stairs](./Layers/stairs.md) [street_lamps](./Layers/street_lamps.md) [stripclub](./Layers/stripclub.md) [surveillance_camera](./Layers/surveillance_camera.md) [tactile_map](./Layers/tactile_map.md) [tactile_model](./Layers/tactile_model.md) [ticket_machine](./Layers/ticket_machine.md) [ticket_validator](./Layers/ticket_validator.md) [tool_library](./Layers/tool_library.md) [trail](./Layers/trail.md) [transit_stops](./Layers/transit_stops.md) [trolley_bay](./Layers/trolley_bay.md) [vending_machine](./Layers/vending_machine.md) [viewpoint](./Layers/viewpoint.md) [village_green](./Layers/village_green.md) [waste_basket](./Layers/waste_basket.md) [waste_disposal](./Layers/waste_disposal.md) [windpump](./Layers/windpump.md) [windturbine](./Layers/windturbine.md) [charge_point](./Layers/charge_point.md) [climbing_area](./Layers/climbing_area.md) [cycleways_and_roads](./Layers/cycleways_and_roads.md) [dentist](./Layers/dentist.md) [ghostsign](./Layers/ghostsign.md) [physiotherapist](./Layers/physiotherapist.md) [sauna](./Layers/sauna.md) [school](./Layers/school.md) [shower](./Layers/shower.md) [souvenir_coin](./Layers/souvenir_coin.md) [sports_centre](./Layers/sports_centre.md) [toilet](./Layers/toilet.md) [indoors](./Layers/indoors.md) [cafe_pub](./Layers/cafe_pub.md) [campsite](./Layers/campsite.md) [climbing_gym](./Layers/climbing_gym.md) [doctors](./Layers/doctors.md) [food](./Layers/food.md) [pharmacy](./Layers/pharmacy.md) [shops](./Layers/shops.md) [tourism_accomodation](./Layers/tourism_accomodation.md) [visitor_information_centre](./Layers/visitor_information_centre.md) [ice_cream](./Layers/ice_cream.md) [bench](./Layers/bench.md) [historic_rolling_stock](./Layers/historic_rolling_stock.md) [historic_aircraft](./Layers/historic_aircraft.md) [drinking_water](./Layers/drinking_water.md) ### images_no_blur Same as `images`, but uploaded request to disable blurring to the panoramax server @@ -601,7 +601,7 @@ _This tagrendering has no question and is thus read-only_ This tagrendering has labels `added_by_default` -This tagRendering is used in 174 layers: [icons](./Layers/icons.md) [address](./Layers/address.md) [adult_changing_table](./Layers/adult_changing_table.md) [advertising](./Layers/advertising.md) [aerialway](./Layers/aerialway.md) [all_streets](./Layers/all_streets.md) [ambulancestation](./Layers/ambulancestation.md) [animal_shelter](./Layers/animal_shelter.md) [assembly_point](./Layers/assembly_point.md) [assisted_repair](./Layers/assisted_repair.md) [atm](./Layers/atm.md) [bank](./Layers/bank.md) [barrier](./Layers/barrier.md) [bbq](./Layers/bbq.md) [beehive](./Layers/beehive.md) [bench_at_pt](./Layers/bench_at_pt.md) [bicycle_counter](./Layers/bicycle_counter.md) [bicycle_library](./Layers/bicycle_library.md) [bicycle_rental](./Layers/bicycle_rental.md) [bike_cafe](./Layers/bike_cafe.md) [bike_cleaning](./Layers/bike_cleaning.md) [bike_parking](./Layers/bike_parking.md) [bike_repair_station](./Layers/bike_repair_station.md) [bike_themed_object](./Layers/bike_themed_object.md) [binocular](./Layers/binocular.md) [birdhide](./Layers/birdhide.md) [brothel](./Layers/brothel.md) [car_rental](./Layers/car_rental.md) [caravansites](./Layers/caravansites.md) [charging_station](./Layers/charging_station.md) [childcare](./Layers/childcare.md) [cinema](./Layers/cinema.md) [climbing](./Layers/climbing.md) [climbing_club](./Layers/climbing_club.md) [climbing_opportunity](./Layers/climbing_opportunity.md) [climbing_route](./Layers/climbing_route.md) [clock](./Layers/clock.md) [crossings](./Layers/crossings.md) [cycle_highways](./Layers/cycle_highways.md) [cyclestreets](./Layers/cyclestreets.md) [cyclist_waiting_aid](./Layers/cyclist_waiting_aid.md) [defibrillator](./Layers/defibrillator.md) [diets](./Layers/diets.md) [direction](./Layers/direction.md) [disaster_response](./Layers/disaster_response.md) [dog_toilet](./Layers/dog_toilet.md) [dogpark](./Layers/dogpark.md) [dumpstations](./Layers/dumpstations.md) [elevator](./Layers/elevator.md) [elongated_coin](./Layers/elongated_coin.md) [entrance](./Layers/entrance.md) [etymology](./Layers/etymology.md) [excrement_bag_dispenser](./Layers/excrement_bag_dispenser.md) [extinguisher](./Layers/extinguisher.md) [fire_station](./Layers/fire_station.md) [firepit](./Layers/firepit.md) [fitness_centre](./Layers/fitness_centre.md) [fitness_station](./Layers/fitness_station.md) [fixme](./Layers/fixme.md) [food_courts](./Layers/food_courts.md) [ghost_bike](./Layers/ghost_bike.md) [governments](./Layers/governments.md) [grab_rail](./Layers/grab_rail.md) [grave](./Layers/grave.md) [guidepost](./Layers/guidepost.md) [hackerspace](./Layers/hackerspace.md) [hydrant](./Layers/hydrant.md) [id_presets](./Layers/id_presets.md) [information_board](./Layers/information_board.md) [insect_hotel](./Layers/insect_hotel.md) [item_with_image](./Layers/item_with_image.md) [kerbs](./Layers/kerbs.md) [lighthouse](./Layers/lighthouse.md) [love_hotel](./Layers/love_hotel.md) [map](./Layers/map.md) [maproulette](./Layers/maproulette.md) [maproulette_challenge](./Layers/maproulette_challenge.md) [maxspeed](./Layers/maxspeed.md) [mobility_hub](./Layers/mobility_hub.md) [mountain_rescue](./Layers/mountain_rescue.md) [nature_reserve](./Layers/nature_reserve.md) [nesting_site](./Layers/nesting_site.md) [note](./Layers/note.md) [nsi_brand](./Layers/nsi_brand.md) [nsi_operator](./Layers/nsi_operator.md) [observation_tower](./Layers/observation_tower.md) [osm_community_index](./Layers/osm_community_index.md) [outdoor_seating](./Layers/outdoor_seating.md) [parcel_lockers](./Layers/parcel_lockers.md) [parking](./Layers/parking.md) [parking_spaces](./Layers/parking_spaces.md) [parking_ticket_machine](./Layers/parking_ticket_machine.md) [picnic_table](./Layers/picnic_table.md) [play_forest](./Layers/play_forest.md) [playground](./Layers/playground.md) [playground_equipment](./Layers/playground_equipment.md) [police](./Layers/police.md) [police_call_box](./Layers/police_call_box.md) [postboxes](./Layers/postboxes.md) [postoffices](./Layers/postoffices.md) [public_bookcase](./Layers/public_bookcase.md) [railway_platforms](./Layers/railway_platforms.md) [rainbow_crossings](./Layers/rainbow_crossings.md) [reception_desk](./Layers/reception_desk.md) [recycling](./Layers/recycling.md) [route_marker](./Layers/route_marker.md) [sauna_at_leisure](./Layers/sauna_at_leisure.md) [scouting_group](./Layers/scouting_group.md) [shelter](./Layers/shelter.md) [ski_piste](./Layers/ski_piste.md) [slow_roads](./Layers/slow_roads.md) [souvenir_note](./Layers/souvenir_note.md) [speed_camera](./Layers/speed_camera.md) [speed_display](./Layers/speed_display.md) [sport_pitch](./Layers/sport_pitch.md) [stairs](./Layers/stairs.md) [street_lamps](./Layers/street_lamps.md) [stripclub](./Layers/stripclub.md) [surveillance_camera](./Layers/surveillance_camera.md) [tactile_map](./Layers/tactile_map.md) [tactile_model](./Layers/tactile_model.md) [ticket_machine](./Layers/ticket_machine.md) [ticket_validator](./Layers/ticket_validator.md) [tool_library](./Layers/tool_library.md) [trail](./Layers/trail.md) [transit_routes](./Layers/transit_routes.md) [transit_stops](./Layers/transit_stops.md) [tree](./Layers/tree.md) [trolley_bay](./Layers/trolley_bay.md) [utility_pole](./Layers/utility_pole.md) [vending_machine](./Layers/vending_machine.md) [veterinary](./Layers/veterinary.md) [viewpoint](./Layers/viewpoint.md) [village_green](./Layers/village_green.md) [walls_and_buildings](./Layers/walls_and_buildings.md) [waste_basket](./Layers/waste_basket.md) [waste_disposal](./Layers/waste_disposal.md) [wayside_shrine](./Layers/wayside_shrine.md) [windpump](./Layers/windpump.md) [windturbine](./Layers/windturbine.md) [building](./Layers/building.md) [charge_point](./Layers/charge_point.md) [climbing_area](./Layers/climbing_area.md) [cycleways_and_roads](./Layers/cycleways_and_roads.md) [dentist](./Layers/dentist.md) [ghostsign](./Layers/ghostsign.md) [hospital](./Layers/hospital.md) [physiotherapist](./Layers/physiotherapist.md) [sauna](./Layers/sauna.md) [school](./Layers/school.md) [shower](./Layers/shower.md) [souvenir_coin](./Layers/souvenir_coin.md) [sports_centre](./Layers/sports_centre.md) [toilet](./Layers/toilet.md) [indoors](./Layers/indoors.md) [tertiary_education](./Layers/tertiary_education.md) [toilet_at_amenity](./Layers/toilet_at_amenity.md) [toilet_at_amenity_lib](./Layers/toilet_at_amenity_lib.md) [cafe_pub](./Layers/cafe_pub.md) [campsite](./Layers/campsite.md) [climbing_gym](./Layers/climbing_gym.md) [doctors](./Layers/doctors.md) [food](./Layers/food.md) [pharmacy](./Layers/pharmacy.md) [shops](./Layers/shops.md) [tourism_accomodation](./Layers/tourism_accomodation.md) [visitor_information_centre](./Layers/visitor_information_centre.md) [ice_cream](./Layers/ice_cream.md) [memorial](./Layers/memorial.md) [bench](./Layers/bench.md) [artwork](./Layers/artwork.md) [historic_rolling_stock](./Layers/historic_rolling_stock.md) [historic_aircraft](./Layers/historic_aircraft.md) [drinking_water](./Layers/drinking_water.md) +This tagRendering is used in 175 layers: [icons](./Layers/icons.md) [address](./Layers/address.md) [adult_changing_table](./Layers/adult_changing_table.md) [advertising](./Layers/advertising.md) [aerialway](./Layers/aerialway.md) [all_streets](./Layers/all_streets.md) [ambulancestation](./Layers/ambulancestation.md) [animal_shelter](./Layers/animal_shelter.md) [assembly_point](./Layers/assembly_point.md) [assisted_repair](./Layers/assisted_repair.md) [atm](./Layers/atm.md) [bank](./Layers/bank.md) [barrier](./Layers/barrier.md) [bbq](./Layers/bbq.md) [beehive](./Layers/beehive.md) [bench_at_pt](./Layers/bench_at_pt.md) [bicycle_counter](./Layers/bicycle_counter.md) [bicycle_library](./Layers/bicycle_library.md) [bicycle_rental](./Layers/bicycle_rental.md) [bike_cafe](./Layers/bike_cafe.md) [bike_cleaning](./Layers/bike_cleaning.md) [bike_parking](./Layers/bike_parking.md) [bike_repair_station](./Layers/bike_repair_station.md) [bike_themed_object](./Layers/bike_themed_object.md) [binocular](./Layers/binocular.md) [birdhide](./Layers/birdhide.md) [brothel](./Layers/brothel.md) [car_rental](./Layers/car_rental.md) [caravansites](./Layers/caravansites.md) [charging_station](./Layers/charging_station.md) [childcare](./Layers/childcare.md) [cinema](./Layers/cinema.md) [climbing](./Layers/climbing.md) [climbing_club](./Layers/climbing_club.md) [climbing_opportunity](./Layers/climbing_opportunity.md) [climbing_route](./Layers/climbing_route.md) [clock](./Layers/clock.md) [crossings](./Layers/crossings.md) [cycle_highways](./Layers/cycle_highways.md) [cyclestreets](./Layers/cyclestreets.md) [cyclist_waiting_aid](./Layers/cyclist_waiting_aid.md) [defibrillator](./Layers/defibrillator.md) [diets](./Layers/diets.md) [direction](./Layers/direction.md) [disaster_response](./Layers/disaster_response.md) [dog_toilet](./Layers/dog_toilet.md) [dogpark](./Layers/dogpark.md) [dumpstations](./Layers/dumpstations.md) [elevator](./Layers/elevator.md) [elongated_coin](./Layers/elongated_coin.md) [entrance](./Layers/entrance.md) [etymology](./Layers/etymology.md) [excrement_bag_dispenser](./Layers/excrement_bag_dispenser.md) [extinguisher](./Layers/extinguisher.md) [fire_station](./Layers/fire_station.md) [firepit](./Layers/firepit.md) [fitness_centre](./Layers/fitness_centre.md) [fitness_station](./Layers/fitness_station.md) [fixme](./Layers/fixme.md) [food_courts](./Layers/food_courts.md) [ghost_bike](./Layers/ghost_bike.md) [governments](./Layers/governments.md) [grab_rail](./Layers/grab_rail.md) [grave](./Layers/grave.md) [guidepost](./Layers/guidepost.md) [hackerspace](./Layers/hackerspace.md) [hydrant](./Layers/hydrant.md) [id_presets](./Layers/id_presets.md) [information_board](./Layers/information_board.md) [insect_hotel](./Layers/insect_hotel.md) [item_with_image](./Layers/item_with_image.md) [kerbs](./Layers/kerbs.md) [lighthouse](./Layers/lighthouse.md) [love_hotel](./Layers/love_hotel.md) [map](./Layers/map.md) [maproulette](./Layers/maproulette.md) [maproulette_challenge](./Layers/maproulette_challenge.md) [maxspeed](./Layers/maxspeed.md) [mobility_hub](./Layers/mobility_hub.md) [mountain_rescue](./Layers/mountain_rescue.md) [nature_reserve](./Layers/nature_reserve.md) [nesting_site](./Layers/nesting_site.md) [note](./Layers/note.md) [nsi_brand](./Layers/nsi_brand.md) [nsi_operator](./Layers/nsi_operator.md) [observation_tower](./Layers/observation_tower.md) [osm_community_index](./Layers/osm_community_index.md) [outdoor_seating](./Layers/outdoor_seating.md) [parcel_lockers](./Layers/parcel_lockers.md) [parking](./Layers/parking.md) [parking_spaces](./Layers/parking_spaces.md) [parking_ticket_machine](./Layers/parking_ticket_machine.md) [picnic_table](./Layers/picnic_table.md) [play_forest](./Layers/play_forest.md) [playground](./Layers/playground.md) [playground_equipment](./Layers/playground_equipment.md) [police](./Layers/police.md) [police_call_box](./Layers/police_call_box.md) [postboxes](./Layers/postboxes.md) [postoffices](./Layers/postoffices.md) [public_bookcase](./Layers/public_bookcase.md) [railway](./Layers/railway.md) [railway_platforms](./Layers/railway_platforms.md) [rainbow_crossings](./Layers/rainbow_crossings.md) [reception_desk](./Layers/reception_desk.md) [recycling](./Layers/recycling.md) [route_marker](./Layers/route_marker.md) [sauna_at_leisure](./Layers/sauna_at_leisure.md) [scouting_group](./Layers/scouting_group.md) [shelter](./Layers/shelter.md) [ski_piste](./Layers/ski_piste.md) [slow_roads](./Layers/slow_roads.md) [souvenir_note](./Layers/souvenir_note.md) [speed_camera](./Layers/speed_camera.md) [speed_display](./Layers/speed_display.md) [sport_pitch](./Layers/sport_pitch.md) [stairs](./Layers/stairs.md) [street_lamps](./Layers/street_lamps.md) [stripclub](./Layers/stripclub.md) [surveillance_camera](./Layers/surveillance_camera.md) [tactile_map](./Layers/tactile_map.md) [tactile_model](./Layers/tactile_model.md) [ticket_machine](./Layers/ticket_machine.md) [ticket_validator](./Layers/ticket_validator.md) [tool_library](./Layers/tool_library.md) [trail](./Layers/trail.md) [transit_routes](./Layers/transit_routes.md) [transit_stops](./Layers/transit_stops.md) [tree](./Layers/tree.md) [trolley_bay](./Layers/trolley_bay.md) [utility_pole](./Layers/utility_pole.md) [vending_machine](./Layers/vending_machine.md) [veterinary](./Layers/veterinary.md) [viewpoint](./Layers/viewpoint.md) [village_green](./Layers/village_green.md) [walls_and_buildings](./Layers/walls_and_buildings.md) [waste_basket](./Layers/waste_basket.md) [waste_disposal](./Layers/waste_disposal.md) [wayside_shrine](./Layers/wayside_shrine.md) [windpump](./Layers/windpump.md) [windturbine](./Layers/windturbine.md) [building](./Layers/building.md) [charge_point](./Layers/charge_point.md) [climbing_area](./Layers/climbing_area.md) [cycleways_and_roads](./Layers/cycleways_and_roads.md) [dentist](./Layers/dentist.md) [ghostsign](./Layers/ghostsign.md) [hospital](./Layers/hospital.md) [physiotherapist](./Layers/physiotherapist.md) [sauna](./Layers/sauna.md) [school](./Layers/school.md) [shower](./Layers/shower.md) [souvenir_coin](./Layers/souvenir_coin.md) [sports_centre](./Layers/sports_centre.md) [toilet](./Layers/toilet.md) [indoors](./Layers/indoors.md) [tertiary_education](./Layers/tertiary_education.md) [toilet_at_amenity](./Layers/toilet_at_amenity.md) [toilet_at_amenity_lib](./Layers/toilet_at_amenity_lib.md) [cafe_pub](./Layers/cafe_pub.md) [campsite](./Layers/campsite.md) [climbing_gym](./Layers/climbing_gym.md) [doctors](./Layers/doctors.md) [food](./Layers/food.md) [pharmacy](./Layers/pharmacy.md) [shops](./Layers/shops.md) [tourism_accomodation](./Layers/tourism_accomodation.md) [visitor_information_centre](./Layers/visitor_information_centre.md) [ice_cream](./Layers/ice_cream.md) [memorial](./Layers/memorial.md) [bench](./Layers/bench.md) [artwork](./Layers/artwork.md) [historic_rolling_stock](./Layers/historic_rolling_stock.md) [historic_aircraft](./Layers/historic_aircraft.md) [drinking_water](./Layers/drinking_water.md) ### split_button _This tagrendering has no question and is thus read-only_ diff --git a/Docs/Layers/cafe_pub.md b/Docs/Layers/cafe_pub.md index 8aafbc570..8ceae7dc9 100644 --- a/Docs/Layers/cafe_pub.md +++ b/Docs/Layers/cafe_pub.md @@ -90,6 +90,7 @@ A layer showing cafés and pubs where one can gather around a drink. The layer a - [cafes_and_pubs](https://mapcomplete.org/cafes_and_pubs) - [onwheels](https://mapcomplete.org/onwheels) - [personal](https://mapcomplete.org/personal) + - [pets](https://mapcomplete.org/pets) - [stations](https://mapcomplete.org/stations) ## Presets diff --git a/Docs/Layers/cafe_pub_dog_friendly.md b/Docs/Layers/cafe_pub_dog_friendly.md new file mode 100644 index 000000000..553d87d12 --- /dev/null +++ b/Docs/Layers/cafe_pub_dog_friendly.md @@ -0,0 +1,890 @@ +[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources) + +# cafe_pub_dog_friendly + +This layer is based on [cafe_pub](../Layers/cafe_pub.md) + +A layer showing cafés and pubs where one can gather around a drink. The layer asks for some relevant questions + + - This layer is shown at zoomlevel **12** and higher + - This layer will automatically load [toilet](./toilet.md) into the layout as it depends on it: tagrendering has_toilets needs this layer (has_toilets) + +## Table of contents + +1. [Themes using this layer](#themes-using-this-layer) +2. [Basic tags for this layer](#basic-tags-for-this-layer) +3. [Supported attributes](#supported-attributes) +4. [Featureview elements and TagRenderings](#featureview-elements-and-tagrenderings) + - [images](#images) + - [reviews](#reviews) + - [Name](#name) + - [Classification](#classification) + - [opening_hours](#opening_hours) + - [website](#website) + - [email](#email) + - [phone](#phone) + - [payment-options](#payment-options) + - [repeated](#repeated) + - [single_level](#single_level) + - [smoking](#smoking) + - [wheelchair-access](#wheelchair-access) + - [pub_reusable_packaging](#pub_reusable_packaging) + - [service:electricity](#serviceelectricity) + - [seating](#seating) + - [dog-access](#dog-access) + - [internet](#internet) + - [internet-fee](#internet-fee) + - [internet-ssid](#internet-ssid) + - [toilets-group](#toilets-group) + - [grouptitle](#grouptitle) + - [has_toilets](#has_toilets) + - [images_toilet](#images_toilet) + - [toilets_repeated](#toilets_repeated) + - [toilets_single_level](#toilets_single_level) + - [toilets_toilet-access](#toilets_toilet-access) + - [toilets_toilets-fee](#toilets_toilets-fee) + - [toilets_toilet-charge](#toilets_toilet-charge) + - [toilets_payment-options-split](#toilets_payment-options-split) + - [toilets_gender_segregated](#toilets_gender_segregated) + - [toilets_toilet-supervised](#toilets_toilet-supervised) + - [toilets_description](#toilets_description) + - [toilets_toilets-wheelchair](#toilets_toilets-wheelchair) + - [toilets-type](#toilets-type) + - [toilets-disposal](#toilets-disposal) + - [menstrual_products](#menstrual_products) + - [menstrual_products_location](#menstrual_products_location) + - [toilets-changing-table](#toilets-changing-table) + - [toilet-changing_table:location](#toilet-changing_tablelocation) + - [toilet-has-paper](#toilet-has-paper) + - [toilet-handwashing](#toilet-handwashing) + - [handwashing-soap](#handwashing-soap) + - [toilet-drying](#toilet-drying) + - [wheelchair-group](#wheelchair-group) + - [wheelchair-picture-carousel](#wheelchair-picture-carousel) + - [wheelchair-picture](#wheelchair-picture) + - [wheelchair-title](#wheelchair-title) + - [toilet-wheelchair-access](#toilet-wheelchair-access) + - [toilets_wheelchair_has_grab_rail_lr](#toilets_wheelchair_has_grab_rail_lr) + - [toilets_wheelchair_has_grab_rail_behind](#toilets_wheelchair_has_grab_rail_behind) + - [toilets_wheelchair_is_foldable_left](#toilets_wheelchair_is_foldable_left) + - [toilets_wheelchair_is_foldable_right](#toilets_wheelchair_is_foldable_right) + - [wheelchair-door-width](#wheelchair-door-width) + - [questions-wheelchair](#questions-wheelchair) + - [adult_changing_table_title](#adult_changing_table_title) + - [adult-changing-table](#adult-changing-table) + - [changing_table_adult_height](#changing_table_adult_height) + - [changing_table_adult_adult-changing-table-min_height](#changing_table_adult_adult-changing-table-min_height) + - [changing_table_adult_adult-changing-table-max_height](#changing_table_adult_adult-changing-table-max_height) + - [changing_table_adult_adult-changing-table-mechanism](#changing_table_adult_adult-changing-table-mechanism) + - [changing_table_adult_adult-changing-table-support](#changing_table_adult_adult-changing-table-support) + - [questions-adult-changing-table](#questions-adult-changing-table) + - [toilet-question-box](#toilet-question-box) + - [leftover-questions](#leftover-questions) + - [move-button](#move-button) + - [delete-button](#delete-button) + - [lod](#lod) + - [spacer](#spacer) +5. [Filters](#filters) + +## Themes using this layer + + - [pets](https://mapcomplete.org/pets) + +## Basic tags for this layer + +Elements must match **all** of the following expressions: + +0. amenity=bar | amenity=pub | amenity=cafe | amenity=biergarten | amenity=nightclub +1. dog=unleashed | dog=leashed | dog=yes + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B%28%20%20%20%20nwr%5B%22amenity%22%3D%22bar%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22bar%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22bar%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22pub%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22pub%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22pub%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22cafe%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22cafe%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22cafe%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22biergarten%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22biergarten%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22biergarten%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22nightclub%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22nightclub%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22nightclub%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + +## Supported attributes + +**Warning:**: this quick overview is incomplete + +| attribute | type | values which are supported by this layer | +-----|-----|----- | +| [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | | +| [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [amenity=pub](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dpub) [amenity=bar](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dbar) [amenity=cafe](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dcafe) [amenity=restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Drestaurant) [amenity=biergarten](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dbiergarten) [amenity=nightclub](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dnightclub) | +| [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | | +| [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | | +| [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | | +| [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | | +| [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [level=0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [level=1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [level=-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) | +| [smoking](https://wiki.openstreetmap.org/wiki/Key:smoking) | Multiple choice | [smoking=yes](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dyes) [smoking=no](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dno) [smoking=outside](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Doutside) | +| [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [wheelchair=designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [wheelchair=yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [wheelchair=limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [wheelchair=no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) | +| [reusable_packaging:accept](https://wiki.openstreetmap.org/wiki/Key:reusable_packaging:accept) | Multiple choice | [reusable_packaging:accept=yes](https://wiki.openstreetmap.org/wiki/Tag:reusable_packaging:accept%3Dyes) [reusable_packaging:accept=no](https://wiki.openstreetmap.org/wiki/Tag:reusable_packaging:accept%3Dno) [reusable_packaging:accept=only](https://wiki.openstreetmap.org/wiki/Tag:reusable_packaging:accept%3Donly) | +| [service:electricity](https://wiki.openstreetmap.org/wiki/Key:service:electricity) | Multiple choice | [service:electricity=yes](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dyes) [service:electricity=limited](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dlimited) [service:electricity=ask](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dask) [service:electricity=no](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dno) | +| [dog](https://wiki.openstreetmap.org/wiki/Key:dog) | Multiple choice | [dog=yes](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dyes) [dog=no](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dno) [dog=leashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dleashed) [dog=unleashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dunleashed) [dog=outside](https://wiki.openstreetmap.org/wiki/Tag:dog%3Doutside) | +| [internet_access](https://wiki.openstreetmap.org/wiki/Key:internet_access) | Multiple choice | [internet_access=wlan](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwlan) [internet_access=no](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dno) [internet_access=terminal](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dterminal) [internet_access=wired](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwired) [internet_access=terminal;wlan](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dterminal;wlan) | +| [internet_access:fee](https://wiki.openstreetmap.org/wiki/Key:internet_access:fee) | Multiple choice | [internet_access:fee=yes](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dyes) [internet_access:fee=no](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dno) [internet_access:fee=customers](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dcustomers) | +| [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid) | [string](../SpecialInputElements.md#string) | [internet_access:ssid=Telekom](https://wiki.openstreetmap.org/wiki/Tag:internet_access:ssid%3DTelekom) | +| [toilets](https://wiki.openstreetmap.org/wiki/Key:toilets) | Multiple choice | [toilets=no](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dno) | +| [toilets](https://wiki.openstreetmap.org/wiki/Key:toilets) | Multiple choice | [toilets=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dyes) [toilets=no](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dno) [toilets=separate](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dseparate) | +| [toilets:level](https://wiki.openstreetmap.org/wiki/Key:toilets:level) | [float](../SpecialInputElements.md#float) | [toilets:level=0](https://wiki.openstreetmap.org/wiki/Tag:toilets:level%3D0) [toilets:level=1](https://wiki.openstreetmap.org/wiki/Tag:toilets:level%3D1) [toilets:level=-1](https://wiki.openstreetmap.org/wiki/Tag:toilets:level%3D-1) | +| [toilets:access](https://wiki.openstreetmap.org/wiki/Key:toilets:access) | [string](../SpecialInputElements.md#string) | [toilets:access=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dyes) [toilets:access=customers](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dcustomers) [toilets:access=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dno) [toilets:access=key](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dkey) | +| [toilets:fee](https://wiki.openstreetmap.org/wiki/Key:toilets:fee) | Multiple choice | [toilets:fee=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dyes) [toilets:fee=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dno) | +| [toilets:charge](https://wiki.openstreetmap.org/wiki/Key:toilets:charge) | [string](../SpecialInputElements.md#string) | | +| [toilets:gender_segregated](https://wiki.openstreetmap.org/wiki/Key:toilets:gender_segregated) | Multiple choice | [toilets:gender_segregated=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:gender_segregated%3Dyes) [toilets:gender_segregated=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:gender_segregated%3Dno) | +| [toilets:supervised](https://wiki.openstreetmap.org/wiki/Key:toilets:supervised) | Multiple choice | [toilets:supervised=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:supervised%3Dyes) [toilets:supervised=interval](https://wiki.openstreetmap.org/wiki/Tag:toilets:supervised%3Dinterval) [toilets:supervised=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:supervised%3Dno) | +| [toilets:description](https://wiki.openstreetmap.org/wiki/Key:toilets:description) | [text](../SpecialInputElements.md#text) | | +| [toilets:wheelchair](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair) | Multiple choice | [toilets:wheelchair=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dyes) [toilets:wheelchair=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dno) [toilets:wheelchair=designated](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Ddesignated) | +| [toilets:position](https://wiki.openstreetmap.org/wiki/Key:toilets:position) | Multiple choice | [toilets:position=seated](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated) [toilets:position=urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Durinal) [toilets:position=squat](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dsquat) [toilets:position=seated;urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated;urinal) | +| [toilets:disposal](https://wiki.openstreetmap.org/wiki/Key:toilets:disposal) | Multiple choice | [toilets:disposal=flush](https://wiki.openstreetmap.org/wiki/Tag:toilets:disposal%3Dflush) [toilets:disposal=pitlatrine](https://wiki.openstreetmap.org/wiki/Tag:toilets:disposal%3Dpitlatrine) [toilets:disposal=bucket](https://wiki.openstreetmap.org/wiki/Tag:toilets:disposal%3Dbucket) | +| [toilets:menstrual_products](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products) | Multiple choice | [toilets:menstrual_products=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dyes) [toilets:menstrual_products=limited](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited) [toilets:menstrual_products=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dno) | +| [toilets:menstrual_products:location](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location) | [string](../SpecialInputElements.md#string) | [toilets:menstrual_products:location=female_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dfemale_toilet) [toilets:menstrual_products:location=male_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dmale_toilet) [toilets:menstrual_products:location=wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dwheelchair_toilet) | +| [changing_table](https://wiki.openstreetmap.org/wiki/Key:changing_table) | Multiple choice | [changing_table=yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dyes) [changing_table=no](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dno) | +| [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [changing_table:location=female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [changing_table:location=male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [changing_table:location=wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [changing_table:location=dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room) | +| [toilets:paper_supplied](https://wiki.openstreetmap.org/wiki/Key:toilets:paper_supplied) | Multiple choice | [toilets:paper_supplied=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dyes) [toilets:paper_supplied=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dno) | +| [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [toilets:handwashing=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [toilets:handwashing=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno) | +| [handwashing:soap](https://wiki.openstreetmap.org/wiki/Key:handwashing:soap) | Multiple choice | [handwashing:soap=yes](https://wiki.openstreetmap.org/wiki/Tag:handwashing:soap%3Dyes) [handwashing:soap=no](https://wiki.openstreetmap.org/wiki/Tag:handwashing:soap%3Dno) | +| [toilets:hands_drying](https://wiki.openstreetmap.org/wiki/Key:toilets:hands_drying) | Multiple choice | [toilets:hands_drying=electric_hand_dryer](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Delectric_hand_dryer) [toilets:hands_drying=paper_towel](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dpaper_towel) [toilets:hands_drying=towel_cabinet](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dtowel_cabinet) [toilets:hands_drying=towel](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dtowel) [toilets:hands_drying=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dno) | +| [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [wheelchair=designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [wheelchair=no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) | +| [toilets:wheelchair:grab_rail:left](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:left) | Multiple choice | [toilets:wheelchair:grab_rail:left=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dyes) [toilets:wheelchair:grab_rail:left=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dyes) [toilets:wheelchair:grab_rail:left=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dno) [toilets:wheelchair:grab_rail:left=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dno) | +| [toilets:wheelchair:grab_rail:behind](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:behind) | Multiple choice | [toilets:wheelchair:grab_rail:behind=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:behind%3Dyes) [toilets:wheelchair:grab_rail:behind=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:behind%3Dno) | +| [toilets:wheelchair:grab_rail:foldable:left](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:foldable:left) | Multiple choice | [toilets:wheelchair:grab_rail:foldable:left=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:left%3Dyes) [toilets:wheelchair:grab_rail:foldable:left=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:left%3Dno) | +| [toilets:wheelchair:grab_rail:foldable:right](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:foldable:right) | Multiple choice | [toilets:wheelchair:grab_rail:foldable:right=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:right%3Dyes) [toilets:wheelchair:grab_rail:foldable:right=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:right%3Dno) | +| [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) | | +| [changing_table:adult](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult) | Multiple choice | [changing_table:adult=yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult%3Dyes) [changing_table:adult=no](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult%3Dno) | +| [changing_table:adult:height](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:height) | [pfloat](../SpecialInputElements.md#pfloat) | [changing_table:adult:height=adjustable](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:height%3Dadjustable) | +| [changing_table:adult:min_height](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:min_height) | [pfloat](../SpecialInputElements.md#pfloat) | | +| [changing_table:adult:max_height](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:max_height) | [pfloat](../SpecialInputElements.md#pfloat) | | +| [changing_table:adult:height:mechanism](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:height:mechanism) | Multiple choice | [changing_table:adult:height:mechanism=manual](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:height:mechanism%3Dmanual) [changing_table:adult:height:mechanism=electric](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:height:mechanism%3Delectric) | +| [changing_table:adult:support](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:support) | Multiple choice | [changing_table:adult:support=wall_mounted](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:support%3Dwall_mounted) [changing_table:adult:support=legs](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:support%3Dlegs) [changing_table:adult:support=wheels](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:support%3Dwheels) | + +## Featureview elements and TagRenderings + +| id | question | labels | freeform key | +-----|-----|-----|----- | +| [images](#images)
_(Original in [questions](./BuiltinQuestions.md#images))_ | _{image_carousel()}{image_upload()}_ | | _Multiple choice only_ | +| [reviews](#reviews)
_(Original in [questions](./BuiltinQuestions.md#reviews))_ | _{create_review()}{list_reviews()}_ | | _Multiple choice only_ | +| [Name](#Name) | What is the name of this business?
_This business is named {name}_ | | *[name](https://wiki.osm.org/wiki/Key:name)* ([string](../SpecialInputElements.md#string)) | +| [Classification](#Classification) | What kind of cafe is this?
6 options | | _Multiple choice only_ | +| [opening_hours](#opening_hours)
_(Original in [questions](./BuiltinQuestions.md#opening_hours))_ | What are the opening hours of ?
_

Opening hours

{opening_hours_table(opening_hours)}_
1 options | | *[opening_hours](https://wiki.osm.org/wiki/Key:opening_hours)* ([opening_hours](../SpecialInputElements.md#opening_hours)) | +| [website](#website)
_(Original in [questions](./BuiltinQuestions.md#website))_ | What is the website of ?
_{website}_
1 options | contact | *[website](https://wiki.osm.org/wiki/Key:website)* ([url](../SpecialInputElements.md#url)) | +| [email](#email)
_(Original in [questions](./BuiltinQuestions.md#email))_ | What is the email address of ?
_{email}_
2 options | contact | *[email](https://wiki.osm.org/wiki/Key:email)* ([email](../SpecialInputElements.md#email)) | +| [phone](#phone)
_(Original in [questions](./BuiltinQuestions.md#phone))_ | What is the phone number of ?
_{link(&LBRACEphone&RBRACE,tel:&LBRACEphone&RBRACE,,,,)}_
1 options | contact | *[phone](https://wiki.osm.org/wiki/Key:phone)* ([phone](../SpecialInputElements.md#phone)) | +| [payment-options](#payment-options)
_(Original in [questions](./BuiltinQuestions.md#payment-options))_ | Which methods of payment are accepted here?
3 options | | _Multiple choice only_ | +| [repeated](#repeated)
_(Original in [questions](./BuiltinQuestions.md#repeated))_ | _Multiple, identical objects can be found on floors {repeat_on}._ | level | _Multiple choice only_ | +| [single_level](#single_level)
_(Original in [questions](./BuiltinQuestions.md#single_level))_ | On what level is this feature located?
_Located on the {level}th floor_
5 options | level | *[level](https://wiki.osm.org/wiki/Key:level)* ([float](../SpecialInputElements.md#float)) | +| [smoking](#smoking)
_(Original in [questions](./BuiltinQuestions.md#smoking))_ | Is smoking allowed at ?
3 options | | _Multiple choice only_ | +| [wheelchair-access](#wheelchair-access)
_(Original in [questions](./BuiltinQuestions.md#wheelchair-access))_ | Is this place accessible with a wheelchair?
4 options | | _Multiple choice only_ | +| [pub_reusable_packaging](#pub_reusable_packaging) | Does accept bring-your-own reusable cups?
3 options | | _Multiple choice only_ | +| [service:electricity](#service:electricity)
_(Original in [questions](./BuiltinQuestions.md#service:electricity))_ | Does this amenity have electrical outlets, available to customers when they are inside?
4 options | | _Multiple choice only_ | +| [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | +| [dog-access](#dog-access)
_(Original in [questions](./BuiltinQuestions.md#dog-access))_ | Are dogs allowed in this business?
5 options | | _Multiple choice only_ | +| [internet](#internet)
_(Original in [questions](./BuiltinQuestions.md#internet))_ | Does this place offer internet access?
6 options | internet-all | _Multiple choice only_ | +| [internet-fee](#internet-fee)
_(Original in [questions](./BuiltinQuestions.md#internet-fee))_ | Is there a fee for internet access?
3 options | internet-all | _Multiple choice only_ | +| [internet-ssid](#internet-ssid)
_(Original in [questions](./BuiltinQuestions.md#internet-ssid))_ | What is the network name for the wireless internet access?
_The network name is {internet_access:ssid}_
1 options | internet-all | *[internet_access:ssid](https://wiki.osm.org/wiki/Key:internet_access:ssid)* ([string](../SpecialInputElements.md#string)) | +| [toilets-group](#toilets-group)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-group))_ | _{group(grouptitle,toilet-questions,wheelchair;wheelchair-title;adult-changing-table)}_ | all | _Multiple choice only_ | +| [grouptitle](#grouptitle)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#grouptitle))_ | _Toilet information_
1 options | all, hidden | _Multiple choice only_ | +| [has_toilets](#has_toilets)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#has_toilets))_ | Has toilets?
3 options | toilet-questions, hidden, all | _Multiple choice only_ | +| [images_toilet](#images_toilet)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#images_toilet))_ | _{image_carousel(toilets:panoramax;toilets:mapillary;toilets:images)}{image_upload(toilets:panoramax,Add a picture of the toilets,)}_ | relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_repeated](#toilets_repeated)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_repeated))_ | _Multiple, identical objects can be found on floors {toilets:repeat_on}._ | level, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_single_level](#toilets_single_level)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_single_level))_ | On what level is this feature located?
_Located on the {toilets:level}th floor_
5 options | level, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | *[toilets:level](https://wiki.osm.org/wiki/Key:toilets:level)* ([float](../SpecialInputElements.md#float)) | +| [toilets_toilet-access](#toilets_toilet-access)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilet-access))_ | Are these toilets publicly accessible?
_Access is {toilets:access}_
4 options | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | *[toilets:access](https://wiki.osm.org/wiki/Key:toilets:access)* ([string](../SpecialInputElements.md#string)) | +| [toilets_toilets-fee](#toilets_toilets-fee)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilets-fee))_ | Are these toilets free to use?
2 options | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_toilet-charge](#toilets_toilet-charge)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilet-charge))_ | How much does one have to pay for these toilets?
_The fee is {toilets:charge}_ | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | *[toilets:charge](https://wiki.osm.org/wiki/Key:toilets:charge)* ([string](../SpecialInputElements.md#string)) | +| [toilets_payment-options-split](#toilets_payment-options-split)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_payment-options-split))_ | Which methods of payment are accepted here?
7 options | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_gender_segregated](#toilets_gender_segregated)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_gender_segregated))_ | Are these toilets gender-segregated?
2 options | relevant-questions, no-prefix, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_toilet-supervised](#toilets_toilet-supervised)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilet-supervised))_ | Is this toilets supervised by a person?
3 options | relevant-questions, no-prefix, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_description](#toilets_description)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_description))_ | Is there still some relevant info that the previous questions did not cover? Feel free to add it here.
_{toilets:description}_ | amenity-no-prefix, no-prefix, relevant-questions, relevant_questions, toilet-questions, hidden, all | *[toilets:description](https://wiki.osm.org/wiki/Key:toilets:description)* ([text](../SpecialInputElements.md#text)) | +| [toilets_toilets-wheelchair](#toilets_toilets-wheelchair)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilets-wheelchair))_ | Is there a dedicated toilet for wheelchair users?
3 options | relevant-questions, wheelchair, hidden, no-prefix, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets-type](#toilets-type)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-type))_ | Which kind of toilets are these?
4 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets-disposal](#toilets-disposal)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-disposal))_ | How is the waste handled?
3 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [menstrual_products](#menstrual_products)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#menstrual_products))_ | Are free, menstrual products distributed here?
3 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [menstrual_products_location](#menstrual_products_location)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#menstrual_products_location))_ | Where are the free menstrual products located?
_The menstrual products are located in {toilets:menstrual_products:location}_
3 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[toilets:menstrual_products:location](https://wiki.osm.org/wiki/Key:toilets:menstrual_products:location)* ([string](../SpecialInputElements.md#string)) | +| [toilets-changing-table](#toilets-changing-table)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-changing-table))_ | Is a changing table (to change diapers) available?
2 options | relevant-questions, no-prefix, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-changing_table:location](#toilet-changing_table:location)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-changing_table:location))_ | Where is the changing table located?
_A changing table is located at {changing_table:location}_
4 options | relevant-questions, no-prefix, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:location](https://wiki.osm.org/wiki/Key:changing_table:location)* ([string](../SpecialInputElements.md#string)) | +| [toilet-has-paper](#toilet-has-paper)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-has-paper))_ | Does one have to bring their own toilet paper to this toilet?
2 options | relevant-questions, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-handwashing](#toilet-handwashing)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-handwashing))_ | Do these toilets have a sink to wash your hands?
2 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [handwashing-soap](#handwashing-soap)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#handwashing-soap))_ | Is soap for handwashing provided?
2 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-drying](#toilet-drying)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-drying))_ | Do these toilets have a device to dry your hands?
5 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-group](#wheelchair-group)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-group))_ | _{group(wheelchair-title,wheelchair;adult-changing-table,)}_ | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-picture-carousel](#wheelchair-picture-carousel)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-picture-carousel))_ | _{image_carousel(toilets:wheelchair:panoramax;toilets:wheelchair:image;toilets:wheelchair:mapillary)}_ | wheelchair, hidden, relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-picture](#wheelchair-picture)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-picture))_ | _{image_upload(toilets:wheelchair:panoramax,Add a picture of the wheelchair accessible toilet,)}_ | wheelchair, hidden, relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-title](#wheelchair-title)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-title))_ | _Wheelchair accessible toilet_
2 options | hidden, relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-wheelchair-access](#toilet-wheelchair-access)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-wheelchair-access))_ | Is the wheelchair-accessible toilet locked?
5 options | hidden, wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_has_grab_rail_lr](#toilets_wheelchair_has_grab_rail_lr)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_has_grab_rail_lr))_ | Is there a grab rail?
4 options | wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_has_grab_rail_behind](#toilets_wheelchair_has_grab_rail_behind)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_has_grab_rail_behind))_ | Does the toilet have a grab rail behind the toilet?
2 options | wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_is_foldable_left](#toilets_wheelchair_is_foldable_left)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_is_foldable_left))_ | Is the left grab rail foldable?
2 options | generic_questions, wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_is_foldable_right](#toilets_wheelchair_is_foldable_right)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_is_foldable_right))_ | Is the right grab rail foldable?
2 options | generic_questions, wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-door-width](#wheelchair-door-width)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-door-width))_ | What is the width of the door to the wheelchair accessible toilet?
_The door to the wheelchair-accessible toilet is {canonical(door:width)} wide_ | relevant-questions, wheelchair, hidden, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[door:width](https://wiki.osm.org/wiki/Key:door:width)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [questions-wheelchair](#questions-wheelchair)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#questions-wheelchair))_ | _{questions(wheelchair,,)}_ | wheelchair, hidden, relevant-questions, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [adult_changing_table_title](#adult_changing_table_title)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#adult_changing_table_title))_ | _Adult changing table_ | hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [adult-changing-table](#adult-changing-table)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#adult-changing-table))_ | Does this toilet have an adult changing table?
2 options | prefixed, hidden, relevant-questions, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [changing_table_adult_height](#changing_table_adult_height)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_height))_ | What is the height of the adult changing table?
_The changing table is {canonical(changing_table:adult:height)} high_
1 options | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:adult:height](https://wiki.osm.org/wiki/Key:changing_table:adult:height)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [changing_table_adult_adult-changing-table-min_height](#changing_table_adult_adult-changing-table-min_height)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-min_height))_ | What is the lowest height the adult changing table can be moved to?
_The lowest height of the adult changing table is {canonical(changing_table:adult:min_height)}_ | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:adult:min_height](https://wiki.osm.org/wiki/Key:changing_table:adult:min_height)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [changing_table_adult_adult-changing-table-max_height](#changing_table_adult_adult-changing-table-max_height)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-max_height))_ | What is the highest height the adult changing table can be moved to?
_The highest height of the adult changing table is {canonical(changing_table:adult:max_height)}_ | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:adult:max_height](https://wiki.osm.org/wiki/Key:changing_table:adult:max_height)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [changing_table_adult_adult-changing-table-mechanism](#changing_table_adult_adult-changing-table-mechanism)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-mechanism))_ | How is the height of the changing table adjusted?
2 options | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [changing_table_adult_adult-changing-table-support](#changing_table_adult_adult-changing-table-support)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-support))_ | How is the adult changing table supported?
3 options | relevant_questions, hidden, prefixed, adult-changing-table, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [questions-adult-changing-table](#questions-adult-changing-table)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#questions-adult-changing-table))_ | _{questions(adult-changing-table,,yes)}_ | hidden, relevant-questions, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-question-box](#toilet-question-box)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-question-box))_ | _{questions(toilet-questions,wheelchair;adult-changing-table,)}_ | toilet-questions, all, hidden | _Multiple choice only_ | +| [leftover-questions](#leftover-questions) | _{questions( ,hidden;wheelchair;adult-changing-table;toilet-questions)}_ | ignore-docs, added_by_default | _Multiple choice only_ | +| [move-button](#move-button) | _{move_button()}_ | | _Multiple choice only_ | +| [delete-button](#delete-button) | _{delete_button()}_ | | _Multiple choice only_ | +| [lod](#lod)
_(Original in [questions](./BuiltinQuestions.md#lod))_ | _{linked_data_from_website()}_ | added_by_default | _Multiple choice only_ | +| [spacer](#spacer) | _
_ | | _Multiple choice only_ | + +### images +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images +_This tagrendering has no question and is thus read-only_ + +*{image_carousel()}{image_upload()}* + +### reviews +Shows the reviews module (including the possibility to leave a review) +_This tagrendering has no question and is thus read-only_ + +*{create_review()}{list_reviews()}* + +### Name +The question is `What is the name of this business?` + +*This business is named {name}* is shown if `name` is set. + +### Classification +The question is `What kind of cafe is this?` + + - *A pub, mostly for drinking beers in a warm, relaxed interior* is shown if with amenity=pub + - *A more modern and commercial bar, possibly with a music and light installation* is shown if with amenity=bar + - *A cafe to drink tea, coffee or an alcoholical bevarage in a quiet environment* is shown if with amenity=cafe + - *A restaurant where one can get a proper meal* is shown if with amenity=restaurant + - *An open space where beer is served, typically seen in Germany* is shown if with amenity=biergarten + - *This is a nightclub or disco with a focus on dancing, music by a DJ with accompanying light show and a bar to get (alcoholic) drinks* is shown if with amenity=nightclub + +### opening_hours +The question is `What are the opening hours of {title()}?` + +*

Opening hours

{opening_hours_table(opening_hours)}* is shown if `opening_hours` is set. + + - *Marked as closed for an unspecified time* is shown if with opening_hours=closed. _This option cannot be chosen as answer_ + +### website +The question is `What is the website of {title()}?` + +*{website}* is shown if `website` is set. + + - *{contact:website}* is shown if with contact:website~.+. _This option cannot be chosen as answer_ + +This tagrendering has labels `contact` + +### email +The question is `What is the email address of {title()}?` + +*{email}* is shown if `email` is set. + + - *{contact:email}* is shown if with contact:email~.+. _This option cannot be chosen as answer_ + - *{operator:email}* is shown if with operator:email~.+. _This option cannot be chosen as answer_ + +This tagrendering has labels `contact` + +### phone +The question is `What is the phone number of {title()}?` + +*{link(&LBRACEphone&RBRACE,tel:&LBRACEphone&RBRACE,,,,)}* is shown if `phone` is set. + + - *{link(&LBRACEcontact:phone&RBRACE,tel:&LBRACEcontact:phone&RBRACE,,,,)}* is shown if with contact:phone~.+. _This option cannot be chosen as answer_ + +This tagrendering has labels `contact` + +### payment-options +The question is `Which methods of payment are accepted here?` + + - *Cash is accepted here* is shown if with payment:cash=yes. Unselecting this answer will add payment:cash=no + - *Payment cards are accepted here* is shown if with payment:cards=yes. Unselecting this answer will add payment:cards=no + - *Payment by QR-code is possible here* is shown if with payment:qr_code=yes. Unselecting this answer will add payment:qr_code=no + +### repeated +_This tagrendering has no question and is thus read-only_ + +*Multiple, identical objects can be found on floors {repeat_on}.* + +This tagrendering is only visible in the popup if the following condition is met: repeat_on~.+ +This tagrendering has labels `level` + +### single_level +The question is `On what level is this feature located?` + +*Located on the {level}th floor* is shown if `level` is set. + + - *Located underground* is shown if with location=underground. _This option cannot be chosen as answer_ + - *Located on the ground floor* is shown if with level=0 + - *Located on the ground floor* is shown if with level=. _This option cannot be chosen as answer_ + - *Located on the first floor* is shown if with level=1 + - *Located on the first basement level* is shown if with level=-1 + +This tagrendering has labels `level` + +### smoking +The question is `Is smoking allowed at {title()}?` + + - *Smoking is allowed* is shown if with smoking=yes + - *Smoking is not allowed* is shown if with smoking=no + - *Smoking is allowed outside.* is shown if with smoking=outside + +### wheelchair-access +The question is `Is this place accessible with a wheelchair?` + + - *This place is specially adapted for wheelchair users* is shown if with wheelchair=designated + - *This place is easily reachable with a wheelchair* is shown if with wheelchair=yes + - *It is possible to reach this place in a wheelchair, but it is not easy* is shown if with wheelchair=limited + - *This place is not reachable with a wheelchair* is shown if with wheelchair=no + +### pub_reusable_packaging +The question is `Does {title()} accept bring-your-own reusable cups?` + + - *Accepts reusable cups* is shown if with reusable_packaging:accept=yes + - *Does not accept reusable cups* is shown if with reusable_packaging:accept=no + - *Only serves to people who bring reusable cups* is shown if with reusable_packaging:accept=only + +### service:electricity +The question is `Does this amenity have electrical outlets, available to customers when they are inside?` + + - *There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics* is shown if with service:electricity=yes + - *There are a few domestic sockets available to customers seated indoors, where they can charge their electronics* is shown if with service:electricity=limited + - *There are no sockets available indoors to customers, but charging might be possible if the staff is asked* is shown if with service:electricity=ask + - *There are a no domestic sockets available to customers seated indoors* is shown if with service:electricity=no + +### seating +The question is `What kind of seating does {title()} have?` + + - *This place has outdoor seating* is shown if with outdoor_seating=yes. Unselecting this answer will add outdoor_seating=no + - *This place has indoor seating* is shown if with indoor_seating=yes. Unselecting this answer will add indoor_seating=no + +### dog-access +The question is `Are dogs allowed in this business?` + + - *Dogs are allowed* is shown if with dog=yes + - *Dogs are not allowed* is shown if with dog=no + - *Dogs are allowed, but they have to be leashed* is shown if with dog=leashed + - *Dogs are allowed and can run around freely* is shown if with dog=unleashed + - *Dogs are allowed only outside* is shown if with dog=outside + +### internet +The question is `Does this place offer internet access?` + + - *This place offers wireless internet access* is shown if with internet_access=wlan + - *This place does not offer internet access* is shown if with internet_access=no + - *This place offers internet access* is shown if with internet_access=yes. _This option cannot be chosen as answer_ + - *This place offers internet access via a terminal or computer* is shown if with internet_access=terminal + - *This place offers wired internet access* is shown if with internet_access=wired + - *This place offers both wireless internet and internet access via a terminal or computer* is shown if with internet_access=terminal;wlan + +This tagrendering has labels `internet-all` + +### internet-fee +The question is `Is there a fee for internet access?` + + - *There is a fee for the internet access at this place* is shown if with internet_access:fee=yes + - *Internet access is free at this place* is shown if with internet_access:fee=no + - *Internet access is free at this place, for customers only* is shown if with internet_access:fee=customers + +This tagrendering is only visible in the popup if the following condition is met: internet_access!=no & internet_access~.+ +This tagrendering has labels `internet-all` + +### internet-ssid +The question is `What is the network name for the wireless internet access?` + +*The network name is {internet_access:ssid}* is shown if `internet_access:ssid` is set. + + - *Telekom* is shown if with internet_access:ssid=Telekom + +This tagrendering is only visible in the popup if the following condition is met: internet_access~^(.*wlan.*)$ +This tagrendering has labels `internet-all` + +### toilets-group +_This tagrendering has no question and is thus read-only_ + +*{group(grouptitle,toilet-questions,wheelchair;wheelchair-title;adult-changing-table)}* + +This tagrendering has labels `all` + +### grouptitle +_This tagrendering has no question and is thus read-only_ + +*Toilet information* + + - *Does not have toilets* is shown if with toilets=no + +This tagrendering has labels `all` `hidden` + +### has_toilets +The question is `Has {title()} toilets?` + + - *Has toilets* is shown if with toilets=yes + - *Has no toilets* is shown if with toilets=no + - *The toilets are marked separately on the map* is shown if with toilets=separate + +This tagrendering has labels `toilet-questions` `hidden` `all` + +### images_toilet +_This tagrendering has no question and is thus read-only_ + +*{image_carousel(toilets:panoramax;toilets:mapillary;toilets:images)}{image_upload(toilets:panoramax,Add a picture of the toilets,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_repeated +_This tagrendering has no question and is thus read-only_ + +*Multiple, identical objects can be found on floors {toilets:repeat_on}.* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:repeat_on~.+ +This tagrendering has labels `level` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_single_level +The question is `On what level is this feature located?` + +*Located on the {toilets:level}th floor* is shown if `toilets:level` is set. + + - *Located underground* is shown if with toilets:location=underground. _This option cannot be chosen as answer_ + - *Located on the ground floor* is shown if with toilets:level=0 + - *Located on the ground floor* is shown if with toilets:level=. _This option cannot be chosen as answer_ + - *Located on the first floor* is shown if with toilets:level=1 + - *Located on the first basement level* is shown if with toilets:level=-1 + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:repeat_on= +This tagrendering has labels `level` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilet-access +The question is `Are these toilets publicly accessible?` + +*Access is {toilets:access}* is shown if `toilets:access` is set. + + - *Public access* is shown if with toilets:access=yes + - *Only access to customers* is shown if with toilets:access=customers + - *Not accessible* is shown if with toilets:access=no + - *Accessible, but one has to ask a key to enter* is shown if with toilets:access=key + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilets-fee +The question is `Are these toilets free to use?` + + - *These are paid toilets* is shown if with toilets:fee=yes + - *Free to use* is shown if with toilets:fee=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:access!=no +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilet-charge +The question is `How much does one have to pay for these toilets?` + +*The fee is {toilets:charge}* is shown if `toilets:charge` is set. + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:fee=yes +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_payment-options-split +The question is `Which methods of payment are accepted here?` + + - *Cash is accepted here* is shown if with toilets:payment:cash=yes. _This option cannot be chosen as answer_. Unselecting this answer will add toilets:payment:cash= + - *Payment cards are accepted here* is shown if with toilets:payment:cards=yes. _This option cannot be chosen as answer_. Unselecting this answer will add toilets:payment:cards= + - *Payment by QR-code is possible here* is shown if with toilets:payment:qr_code=yes. Unselecting this answer will add toilets:payment:qr_code=no + - *Coins are accepted here* is shown if with toilets:payment:coins=yes. Unselecting this answer will add toilets:payment:coins=no + - *Bank notes are accepted here* is shown if with toilets:payment:notes=yes. Unselecting this answer will add toilets:payment:notes=no + - *Debit cards are accepted here* is shown if with toilets:payment:debit_cards=yes. Unselecting this answer will add toilets:payment:debit_cards=no + - *Credit cards are accepted here* is shown if with toilets:payment:credit_cards=yes. Unselecting this answer will add toilets:payment:credit_cards=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:fee=yes +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_gender_segregated +The question is `Are these toilets gender-segregated?` + + - *There is a separate, signposted area for men and women* is shown if with toilets:gender_segregated=yes + - *There is no separate, signposted area for men and women* is shown if with toilets:gender_segregated=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:toilets:position!=urinal +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilet-supervised +The question is `Is this toilets supervised by a person?` + + - *There is a person supervising these toilets during (most of) the opening hours* is shown if with toilets:supervised=yes + - *There is a person supervising these toilets, but they are present only during certain times of the opening hours* is shown if with toilets:supervised=interval + - *These toilets are not supervised* is shown if with toilets:supervised=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:access=yes | toilets:access=) +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_description +The question is `Is there still some relevant info that the previous questions did not cover? Feel free to add it here.` + +*{toilets:description}* is shown if `toilets:description` is set. + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `amenity-no-prefix` `no-prefix` `relevant-questions` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilets-wheelchair +The question is `Is there a dedicated toilet for wheelchair users?` + + - *There is a dedicated toilet for wheelchair users* is shown if with toilets:wheelchair=yes + - *No wheelchair access* is shown if with toilets:wheelchair=no + - *There is only a dedicated toilet for wheelchair users* is shown if with toilets:wheelchair=designated + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `wheelchair` `hidden` `no-prefix` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets-type +The question is `Which kind of toilets are these?` + + - *There are only seated toilets* is shown if with toilets:position=seated + - *There are only urinals here* is shown if with toilets:position=urinal + - *There are only squat toilets here* is shown if with toilets:position=squat + - *Both seated toilets and urinals are available here* is shown if with toilets:position=seated;urinal + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets-disposal +The question is `How is the waste handled?` + + - *The waste is moved away by flushing the toilet with water* is shown if with toilets:disposal=flush + - *The waste falls into a pit* is shown if with toilets:disposal=pitlatrine + - *The waste is collected in a bucket or similar container, which is regularly removed* is shown if with toilets:disposal=bucket + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### menstrual_products +The question is `Are free, menstrual products distributed here?` + + - *Free menstrual products are available to all visitors of these toilets* is shown if with toilets:menstrual_products=yes + - *Free menstrual products are available to some visitors of these toilets* is shown if with toilets:menstrual_products=limited + - *No free menstrual products are available here* is shown if with toilets:menstrual_products=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### menstrual_products_location +The question is `Where are the free menstrual products located?` + +*The menstrual products are located in {toilets:menstrual_products:location}* is shown if `toilets:menstrual_products:location` is set. + + - *The free, menstrual products are located in the toilet for women* is shown if with toilets:menstrual_products:location=female_toilet + - *The free, menstrual products are located in the toilet for men* is shown if with toilets:menstrual_products:location=male_toilet + - *The free, menstrual products are located in the toilet for wheelchair users* is shown if with toilets:menstrual_products:location=wheelchair_toilet + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:menstrual_products=limited | toilets:menstrual_products:location~.+) +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets-changing-table +The question is `Is a changing table (to change diapers) available?` + + - *A changing table is available* is shown if with changing_table=yes + - *No changing table is available* is shown if with changing_table=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-changing_table:location +The question is `Where is the changing table located?` + +*A changing table is located at {changing_table:location}* is shown if `changing_table:location` is set. + + - *A changing table is in the toilet for women* is shown if with changing_table:location=female_toilet + - *A changing table is in the toilet for men* is shown if with changing_table:location=male_toilet + - *A changing table is in the toilet for wheelchair users* is shown if with changing_table:location=wheelchair_toilet + - *A changing table is in a dedicated room* is shown if with changing_table:location=dedicated_room + +This tagrendering is only visible in the popup if the following condition is met: changing_table=yes & toilets=yes +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-has-paper +The question is `Does one have to bring their own toilet paper to this toilet?` + + - *This toilet is equipped with toilet paper* is shown if with toilets:paper_supplied=yes + - *You have to bring your own toilet paper to this toilet* is shown if with toilets:paper_supplied=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:position!=urinal +This tagrendering has labels `relevant-questions` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-handwashing +The question is `Do these toilets have a sink to wash your hands?` + + - *These toilets have a sink to wash your hands* is shown if with toilets:handwashing=yes + - *These toilets don't have a sink to wash your hands* is shown if with toilets:handwashing=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### handwashing-soap +The question is `Is soap for handwashing provided?` + + - *Soap for handwashing is provided* is shown if with handwashing:soap=yes + - *No soap for handwashing* is shown if with handwashing:soap=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:handwashing=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-drying +The question is `Do these toilets have a device to dry your hands?` + + - *Electric hand dryers are available for drying hands.* is shown if with toilets:hands_drying=electric_hand_dryer + - *Paper towels are available for drying hands.* is shown if with toilets:hands_drying=paper_towel + - *A towel roll cabinet is available for drying hands* is shown if with toilets:hands_drying=towel_cabinet + - *A fabric towel available to dry your hands.* is shown if with toilets:hands_drying=towel + - *There are no hand drying facilities available.* is shown if with toilets:hands_drying=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:handwashing=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-group +_This tagrendering has no question and is thus read-only_ + +*{group(wheelchair-title,wheelchair;adult-changing-table,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-picture-carousel +_This tagrendering has no question and is thus read-only_ + +*{image_carousel(toilets:wheelchair:panoramax;toilets:wheelchair:image;toilets:wheelchair:mapillary)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `hidden` `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-picture +_This tagrendering has no question and is thus read-only_ + +*{image_upload(toilets:wheelchair:panoramax,Add a picture of the wheelchair accessible toilet,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `hidden` `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-title +_This tagrendering has no question and is thus read-only_ + +*Wheelchair accessible toilet* + + - *Wheelchair accessibility features* is shown if with wheelchair=designated | toilets:wheelchair=designated + - *No wheelchair accessible toilet* is shown if with wheelchair=no | toilets:wheelchair=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `hidden` `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-wheelchair-access +The question is `Is the wheelchair-accessible toilet locked?` + + - *The wheelchair accessible toilets are freely accessible* is shown if with toilets:wheelchair:access=yes + - *One needs to ask permission to access wheelchair-accessible toilet, e.g. by asking a key* is shown if with toilets:wheelchair:access=key + - *One can use a Master Locksmiths Access Key (MLAK) to access this bathroom* is shown if with centralkey=mlak + - *One can use a RADAR Key to access this bathroom* is shown if with centralkey=nks + - *One can use a EuroKey to access this bathroom* is shown if with centralkey=eurokey + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) & (access=yes | access=public | access=customers | access=) +This tagrendering has labels `hidden` `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_has_grab_rail_lr +The question is `Is there a grab rail?` + + - *Grab rails on both sides* is shown if with toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=yes + - *Only grab rails on the left side* is shown if with toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=no + - *Grab rails on the right side* is shown if with toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=yes + - *No grab rails at all* is shown if with toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_has_grab_rail_behind +The question is `Does the toilet have a grab rail behind the toilet?` + + - *Has a grab rail behind the toilet* is shown if with toilets:wheelchair:grab_rail:behind=yes + - *No grab rail behind the toilet* is shown if with toilets:wheelchair:grab_rail:behind=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_is_foldable_left +The question is `Is the left grab rail foldable?` + + - *The left grab rail is foldable* is shown if with toilets:wheelchair:grab_rail:foldable:left=yes + - *The left grab rail is not foldable* is shown if with toilets:wheelchair:grab_rail:foldable:left=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:wheelchair:grab_rail:left=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `generic_questions` `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_is_foldable_right +The question is `Is the right grab rail foldable?` + + - *The right grab rail is foldable* is shown if with toilets:wheelchair:grab_rail:foldable:right=yes + - *The right grab rail is not foldable* is shown if with toilets:wheelchair:grab_rail:foldable:right=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:wheelchair:grab_rail:right=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `generic_questions` `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-door-width +The question is `What is the width of the door to the wheelchair accessible toilet?` + +*The door to the wheelchair-accessible toilet is {canonical(door:width)} wide* is shown if `door:width` is set. + +The allowed input is of type pfloat and is in range 0.4 until 4 (both inclusive). A warning will appear if the value is outside of 0.6 and 2. + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=designated | (amenity=toilet & wheelchair~^(yes|designated)$)) +This tagrendering has labels `relevant-questions` `wheelchair` `hidden` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### questions-wheelchair +_This tagrendering has no question and is thus read-only_ + +*{questions(wheelchair,,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `wheelchair` `hidden` `relevant-questions` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### adult_changing_table_title +_This tagrendering has no question and is thus read-only_ + +*Adult changing table* + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & toilets=yes +This tagrendering has labels `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### adult-changing-table +The question is `Does this toilet have an adult changing table?` + + - *Has a changing table for adults* is shown if with changing_table:adult=yes + - *No changing table for adults* is shown if with changing_table:adult=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `prefixed` `hidden` `relevant-questions` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_height +The question is `What is the height of the adult changing table?` + +*The changing table is {canonical(changing_table:adult:height)} high* is shown if `changing_table:adult:height` is set. + +The allowed input is of type pfloat and is in range 0.4 until 2 (both inclusive). A warning will appear if the value is outside of 0.8 and 1.7. + + - *The changing table is adjustable in height* is shown if with changing_table:adult:height=adjustable + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-min_height +The question is `What is the lowest height the adult changing table can be moved to?` + +*The lowest height of the adult changing table is {canonical(changing_table:adult:min_height)}* is shown if `changing_table:adult:min_height` is set. + +The allowed input is of type pfloat and is in range 0.4 until 2 (both inclusive). A warning will appear if the value is outside of 0.8 and 1.7. + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & changing_table:adult:height=adjustable & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-max_height +The question is `What is the highest height the adult changing table can be moved to?` + +*The highest height of the adult changing table is {canonical(changing_table:adult:max_height)}* is shown if `changing_table:adult:max_height` is set. + +The allowed input is of type pfloat and is in range 0.4 until 2 (both inclusive). A warning will appear if the value is outside of 0.8 and 1.7. + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & changing_table:adult:height=adjustable & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-mechanism +The question is `How is the height of the changing table adjusted?` + + - *The height of the adult changing table is adjusted manually* is shown if with changing_table:adult:height:mechanism=manual + - *The height of the adult changing table is adjusted electrically* is shown if with changing_table:adult:height:mechanism=electric + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & changing_table:adult:height=adjustable & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-support +The question is `How is the adult changing table supported?` + + - *The changing table is mounted to the wall* is shown if with changing_table:adult:support=wall_mounted + - *The changing table stands on table legs* is shown if with changing_table:adult:support=legs + - *The changing table stands on table legs with wheels and can be moved* is shown if with changing_table:adult:support=wheels + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### questions-adult-changing-table +_This tagrendering has no question and is thus read-only_ + +*{questions(adult-changing-table,,yes)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `hidden` `relevant-questions` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-question-box +_This tagrendering has no question and is thus read-only_ + +*{questions(toilet-questions,wheelchair;adult-changing-table,)}* + +This tagrendering has labels `toilet-questions` `all` `hidden` + +### leftover-questions +_This tagrendering has no question and is thus read-only_ + +*{questions( ,hidden;wheelchair;adult-changing-table;toilet-questions)}* + +This tagrendering has labels `ignore-docs` `added_by_default` + +### move-button +_This tagrendering has no question and is thus read-only_ + +*{move_button()}* + +### delete-button +_This tagrendering has no question and is thus read-only_ + +*{delete_button()}* + +### lod +_This tagrendering has no question and is thus read-only_ + +*{linked_data_from_website()}* + +This tagrendering has labels `added_by_default` + +### spacer +_This tagrendering has no question and is thus read-only_ + +*
* + +## Filters + +| id | question | osmTags | +-----|-----|----- | +| open_now.0 | Now open | _isOpen=yes | + +| id | question | osmTags | +-----|-----|----- | +| accepts_cash.0 | Accepts cash | payment:cash=yes | + +| id | question | osmTags | +-----|-----|----- | +| accepts_cards.0 | Accepts payment cards | payment:cards=yes | + +| id | question | osmTags | +-----|-----|----- | +| has_internet.0 | Offers internet | internet_access=wlan | internet_access=yes | internet_access=wired | + +| id | question | osmTags | +-----|-----|----- | +| has_electricity.0 | Offers electricity | service:electricity=yes | + +| id | question | osmTags | +-----|-----|----- | +| outdoor_seating.0 | Has outdoor seating | outdoor_seating=yes | + +| id | question | osmTags | +-----|-----|----- | +| indoor_seating.0 | Has indoor seating | indoor_seating=yes | + +| id | question | osmTags | +-----|-----|----- | +| dogs.0 | *No preference towards dogs* (default) | | +| dogs.1 | Dogs allowed | dog=unleashed | dog=yes | +| dogs.2 | No dogs allowed | dog=no | + + + +This document is autogenerated from [assets/themes/pets/pets.json](https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/assets/themes/pets/pets.json) diff --git a/Docs/Layers/food.md b/Docs/Layers/food.md index 5a6f0c3d0..ad55cfae3 100644 --- a/Docs/Layers/food.md +++ b/Docs/Layers/food.md @@ -243,7 +243,7 @@ Elements must match **any** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -522,7 +522,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Layers/food_dog_friendly.md b/Docs/Layers/food_dog_friendly.md index 2d67ec011..e645cdb63 100644 --- a/Docs/Layers/food_dog_friendly.md +++ b/Docs/Layers/food_dog_friendly.md @@ -228,7 +228,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -507,7 +507,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Layers/food_glutenfree.md b/Docs/Layers/food_glutenfree.md index f1e8a4ec3..72397273a 100644 --- a/Docs/Layers/food_glutenfree.md +++ b/Docs/Layers/food_glutenfree.md @@ -230,7 +230,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -518,7 +518,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Layers/food_lactosefree.md b/Docs/Layers/food_lactosefree.md index 3ef607366..6627200fa 100644 --- a/Docs/Layers/food_lactosefree.md +++ b/Docs/Layers/food_lactosefree.md @@ -230,7 +230,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [gluten_free](#gluten_free)
_(Original in [diets](./diets.md#gluten_free))_ | Does this shop have a gluten free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -518,7 +518,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Layers/friture.md b/Docs/Layers/friture.md index b8e375351..425f97262 100644 --- a/Docs/Layers/friture.md +++ b/Docs/Layers/friture.md @@ -228,7 +228,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -507,7 +507,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Layers/historic_rolling_stock.md b/Docs/Layers/historic_rolling_stock.md index 30ad8a29d..fa25fe2db 100644 --- a/Docs/Layers/historic_rolling_stock.md +++ b/Docs/Layers/historic_rolling_stock.md @@ -5,6 +5,9 @@ Historic rolling stock (such as locomotives, railway cars and wagons) which are permanently placed at a location - This layer is shown at zoomlevel **5** and higher + - This layer will automatically load [railway](./railway.md) into the layout as it depends on it: preset `a locomotive on a permanent location` snaps to this layer (historic_rolling_stock.presets[0]) + - This layer will automatically load [railway](./railway.md) into the layout as it depends on it: preset `a railway car on a permanent location` snaps to this layer (historic_rolling_stock.presets[1]) + - This layer will automatically load [railway](./railway.md) into the layout as it depends on it: preset `a minecart on a permanent location` snaps to this layer (historic_rolling_stock.presets[2]) ## Table of contents @@ -38,9 +41,9 @@ Historic rolling stock (such as locomotives, railway cars and wagons) which are The following options to create new points are included: - - **a locomotive on a permanent location** which has the following tags:historic=locomotive - - **a railway car on a permanent location** which has the following tags:historic=railway_car - - **a minecart on a permanent location** which has the following tags:historic=minecart + - **a locomotive on a permanent location** which has the following tags:historic=locomotive (snaps to layers `railway`) + - **a railway car on a permanent location** which has the following tags:historic=railway_car (snaps to layers `railway`) + - **a minecart on a permanent location** which has the following tags:historic=minecart (snaps to layers `railway`) ## Basic tags for this layer diff --git a/Docs/Layers/ice_cream.md b/Docs/Layers/ice_cream.md index c42c878e4..7055e4086 100644 --- a/Docs/Layers/ice_cream.md +++ b/Docs/Layers/ice_cream.md @@ -183,7 +183,7 @@ Elements must match the expression **abandoned:railway=rail + - abandoned:railway=tram + - abandoned:railway=subway + - abandoned:railway=light_rail + - disused:railway=rail + - disused:railway=tram + - disused:railway=subway + - disused:railway=light_rail + - railway=rail + - railway=tram + - railway=subway + - railway=light_rail + - railway=disused + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B%28%20%20%20%20nwr%5B%22abandoned%3Arailway%22%3D%22rail%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22abandoned%3Arailway%22%3D%22tram%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22abandoned%3Arailway%22%3D%22subway%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22abandoned%3Arailway%22%3D%22light_rail%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22disused%3Arailway%22%3D%22rail%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22disused%3Arailway%22%3D%22tram%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22disused%3Arailway%22%3D%22subway%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22disused%3Arailway%22%3D%22light_rail%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22railway%22%3D%22rail%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22railway%22%3D%22tram%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22railway%22%3D%22subway%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22railway%22%3D%22light_rail%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22railway%22%3D%22disused%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + +## Supported attributes + +## Featureview elements and TagRenderings + +| id | question | labels | freeform key | +-----|-----|-----|----- | +| [images](#images)
_(Original in [questions](./BuiltinQuestions.md#images))_ | _{image_carousel()}{image_upload()}_ | | _Multiple choice only_ | +| [leftover-questions](#leftover-questions) | _{questions( ,hidden)}_ | ignore-docs, added_by_default | _Multiple choice only_ | +| [spacer](#spacer) | _
_ | | _Multiple choice only_ | +| [lod](#lod)
_(Original in [questions](./BuiltinQuestions.md#lod))_ | _{linked_data_from_website()}_ | added_by_default | _Multiple choice only_ | + +### images +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images +_This tagrendering has no question and is thus read-only_ + +*{image_carousel()}{image_upload()}* + +### leftover-questions +_This tagrendering has no question and is thus read-only_ + +*{questions( ,hidden)}* + +This tagrendering has labels `ignore-docs` `added_by_default` + +### spacer +_This tagrendering has no question and is thus read-only_ + +*
* + +### lod +_This tagrendering has no question and is thus read-only_ + +*{linked_data_from_website()}* + +This tagrendering has labels `added_by_default` + + +This document is autogenerated from [assets/layers/railway/railway.json](https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/assets/layers/railway/railway.json) diff --git a/Docs/Layers/toilet.md b/Docs/Layers/toilet.md index a6bb50709..aa4bdf47c 100644 --- a/Docs/Layers/toilet.md +++ b/Docs/Layers/toilet.md @@ -27,6 +27,7 @@ A layer showing (public) toilets - This layer is needed as dependency for layer [icecream_lactosefree](#icecream_lactosefree) - This layer is needed as dependency for layer [shops_lactosefree](#shops_lactosefree) - This layer is needed as dependency for layer [food_dog_friendly](#food_dog_friendly) + - This layer is needed as dependency for layer [cafe_pub_dog_friendly](#cafe_pub_dog_friendly) - This layer is needed as dependency for layer [pet_shops](#pet_shops) - This layer is needed as dependency for layer [shop_dog_friendly](#shop_dog_friendly) - This layer is needed as dependency for layer [tourism_accomodation_with_sauna](#tourism_accomodation_with_sauna) diff --git a/Docs/OnlineServicesOverview.md b/Docs/OnlineServicesOverview.md index 25743f14a..df27ab9a0 100644 --- a/Docs/OnlineServicesOverview.md +++ b/Docs/OnlineServicesOverview.md @@ -79,7 +79,7 @@ Endpoint for search with photon | https://report.mapcomplete.org/report | If a severe error occurs in MapComplete, this is logged on this server - this mostly concerns errors where making a change to OpenStreetMap failed. Data is handled confidentially and _only_ to replay the change and fix the root cause. | OpenData, yes, | | https://data.mapcomplete.org/countrycoder/ | For quite some functions, we need to know in what _country_ a feature is located. LatLon2Country is a static dataset, which, by cleverly encoding the data, can quickly tell in what country a feature is located. | OpenData, source available, self hostable, https://source.mapcomplete.org/MapComplete/latlon2country | | https://data.mapcomplete.org/nsi | Contains a copy and the logos of the Name Suggestion Index | | -| https://panoramax.mapcomplete.org | Various endpoints to load images from panoramax | OpenData, source available, self hostable, | +| https://panoramax.mapcomplete.org | The panoramax-server that MapComplete uploads to | OpenData, source available, self hostable, https://wiki.openstreetmap.org/wiki/Panoramax | | https://lod.mapcomplete.org/extractgraph?url={url} | This proxy queries websites to detect if they contain linked open data and gives this data back. Triggered by opening a feature | OpenData, source available, self hostable, https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/scripts/serverLdScrape.ts | ### mapillary.com diff --git a/Docs/SpecialInputElements.md b/Docs/SpecialInputElements.md index 2a60bdbca..78dcd04e9 100644 --- a/Docs/SpecialInputElements.md +++ b/Docs/SpecialInputElements.md @@ -29,7 +29,6 @@ The listed types here trigger a special input element. Use them in `tagrendering 19. [translation](#translation) 20. [tag](#tag) 21. [nsi](#nsi) -22. [distance](#distance) ### string A simple piece of text which is at most 255 characters long @@ -57,6 +56,8 @@ A geographical direction, in degrees. 0° is north, 90° is east, ... Will retur ### Input helper This element has an input helper showing a map and 'viewport' indicating the direction. By default, this map is zoomed to zoomlevel 17, but this can be changed with the first argument +### distance +A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `["21", "map,photo"] ### slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction. ### url @@ -183,8 +184,6 @@ Makes sure the the string is of format `Record` A simple tag of the format `key=value` OR a tagExpression ### nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this -### distance -A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `["21", "map,photo"] This document is autogenerated from [src/UI/InputElement/Validators.ts](https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/src/UI/InputElement/Validators.ts) diff --git a/Docs/SpecialRenderings.md b/Docs/SpecialRenderings.md index 1bf344378..cb00c41ad 100644 --- a/Docs/SpecialRenderings.md +++ b/Docs/SpecialRenderings.md @@ -14,6 +14,8 @@ General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_nam - [UI](#ui) + [braced](#braced) + [create_copy](#create_copy) + + [preset_description](#preset_description) + + [show_icons](#show_icons) + [title](#title) + [translated](#translated) - [data](#data) @@ -79,13 +81,15 @@ General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_nam - [tagrendering_manipulation](#tagrendering_manipulation) + [group](#group) + [multi](#multi) - + [open_in_iD](#open_in_id) - + [open_in_josm](#open_in_josm) + [steal](#steal) + - [ui](#ui) + + [preset_type_select](#preset_type_select) - [web_and_communication](#web_and_communication) + [fediverse_link](#fediverse_link) + [link](#link) + [mapillary_link](#mapillary_link) + + [open_in_iD](#open_in_id) + + [open_in_josm](#open_in_josm) + [send_email](#send_email) + [wikidata_label](#wikidata_label) + [wikipedia](#wikipedia) @@ -95,8 +99,6 @@ General usage is `{func_name()}`, `{func_name(arg, someotherarg)}` or `{func_nam + [histogram](#histogram) + [language_chooser](#language_chooser) + [multi_apply](#multi_apply) - + [preset_description](#preset_description) - + [preset_type_select](#preset_type_select) + [upload_to_osm](#upload_to_osm) # Using expanded syntax @@ -140,7 +142,7 @@ Show a literal text within braces -----|-----|----- | | text | _undefined_ | The value to show | -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L332](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L332) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L296](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L296) #### Example usage of braced @@ -150,17 +152,42 @@ Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L332](/src/ Allow to create a copy of the current element -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L356](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L356) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L315](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L315) #### Example usage of create_copy `{create_copy()}` +### preset_description + +Shows the extra description from the presets of the layer, if one matches. It will pick the most specific one (e.g. if preset `A` implies `B`, but `B` does not imply `A`, it'll pick B) or the first one if no ordering can be made. Might be empty + +Defined in [/src/UI/Popup/DataVisualisations.ts#L215](/src/UI/Popup/DataVisualisations.ts#L215) + +#### Example usage of preset_description + +`{preset_description()}` + +### show_icons + +Displays all icons from the specified tagRenderings (if they are known and have an icon) together, e.g. to give a summary of the dietary options + +| name | default | description | +-----|-----|----- | +| labels | _undefined_ | A ';'-separated list of labels and/or ids of tagRenderings | +| class | inline-flex mx-4 | CSS-classes of the container, space-separated | + +Defined in [/src/UI/Popup/DataVisualisations.ts#L307](/src/UI/Popup/DataVisualisations.ts#L307) + +#### Example usage of show_icons + +`{show_icons(,inline-flex mx-4)}` + ### title Shows the title of the popup. Useful for some cases, e.g. 'What is phone number of {title()}?' -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L311](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L311) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L281](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L281) #### Example usage of title @@ -174,7 +201,7 @@ If the given key can be interpreted as a JSON, only show the key containing the -----|-----|----- | | key | value | The attribute to interpret as json | -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L277](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L277) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L251](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L251) #### Example usage of translated @@ -188,7 +215,7 @@ Visualises data of a POI, sometimes with data updating capabilities Prints all key-value pairs of the object - used for debugging -Defined in [/src/UI/Popup/DataVisualisations.ts#L283](/src/UI/Popup/DataVisualisations.ts#L283) +Defined in [/src/UI/Popup/DataVisualisations.ts#L270](/src/UI/Popup/DataVisualisations.ts#L270) #### Example usage of all_tags @@ -202,7 +229,7 @@ Converts a short, canonical value into the long, translated text including the u -----|-----|----- | | key | _undefined_ | The key of the tag to give the canonical text for | -Defined in [/src/UI/Popup/DataVisualisations.ts#L169](/src/UI/Popup/DataVisualisations.ts#L169) +Defined in [/src/UI/Popup/DataVisualisations.ts#L163](/src/UI/Popup/DataVisualisations.ts#L163) #### Example usage of canonical @@ -217,7 +244,7 @@ Converts compass degrees (with 0° being north, 90° being east, ...) into a hum | key | _direction:centerpoint | The attribute containing the degrees | | offset | 0 | Offset value that is added to the actual value, e.g. `180` to indicate the opposite (backward) direction | -Defined in [/src/UI/Popup/DataVisualisations.ts#L45](/src/UI/Popup/DataVisualisations.ts#L45) +Defined in [/src/UI/Popup/DataVisualisations.ts#L47](/src/UI/Popup/DataVisualisations.ts#L47) #### Example usage of direction_absolute @@ -227,7 +254,7 @@ Defined in [/src/UI/Popup/DataVisualisations.ts#L45](/src/UI/Popup/DataVisualisa Gives a distance indicator and a compass pointing towards the location from your GPS-location. If clicked, centers the map on the object -Defined in [/src/UI/Popup/DataVisualisations.ts#L27](/src/UI/Popup/DataVisualisations.ts#L27) +Defined in [/src/UI/Popup/DataVisualisations.ts#L34](/src/UI/Popup/DataVisualisations.ts#L34) #### Example usage of direction_indicator @@ -243,7 +270,7 @@ A small element, showing if the POI is currently open and when the next change i | prefix | _empty string_ | Remove this string from the start of the value before parsing. __Note: use `&LPARENs` to indicate `(` if needed__ | | postfix | _empty string_ | Remove this string from the end of the value before parsing. __Note: use `&RPARENs` to indicate `)` if needed__ | -Defined in [/src/UI/Popup/DataVisualisations.ts#L128](/src/UI/Popup/DataVisualisations.ts#L128) +Defined in [/src/UI/Popup/DataVisualisations.ts#L126](/src/UI/Popup/DataVisualisations.ts#L126) #### Example usage of opening_hours_state @@ -259,7 +286,7 @@ Creates an opening-hours table. Usage: {opening_hours_table(opening_hours)} to c | prefix | _empty string_ | Remove this string from the start of the value before parsing. __Note: use `&LPARENs` to indicate `(` if needed__ | | postfix | _empty string_ | Remove this string from the end of the value before parsing. __Note: use `&RPARENs` to indicate `)` if needed__ | -Defined in [/src/UI/Popup/DataVisualisations.ts#L89](/src/UI/Popup/DataVisualisations.ts#L89) +Defined in [/src/UI/Popup/DataVisualisations.ts#L87](/src/UI/Popup/DataVisualisations.ts#L87) #### Example usage of opening_hours_table @@ -273,7 +300,7 @@ Creates a visualisation for 'points in time', e.g. collection times of a postbox -----|-----|----- | | key | _undefined_ | The key out of which the points_in_time will be parsed | -Defined in [/src/UI/Popup/DataVisualisations.ts#L294](/src/UI/Popup/DataVisualisations.ts#L294) +Defined in [/src/UI/Popup/DataVisualisations.ts#L281](/src/UI/Popup/DataVisualisations.ts#L281) #### Example usage of points_in_time @@ -283,7 +310,7 @@ Defined in [/src/UI/Popup/DataVisualisations.ts#L294](/src/UI/Popup/DataVisualis Show general statistics about all the elements currently in view. Intended to use on the `current_view`-layer. They will be split per layer -Defined in [/src/UI/Popup/DataVisualisations.ts#L209](/src/UI/Popup/DataVisualisations.ts#L209) +Defined in [/src/UI/Popup/DataVisualisations.ts#L203](/src/UI/Popup/DataVisualisations.ts#L203) #### Example usage of statistics @@ -311,7 +338,7 @@ Elements to help with importing data to OSM. For example: buttons to import a fe | text | _undefined_ | The text to show on the button | | icon | ./assets/svg/robot.svg | The icon to show on the button | -Defined in [/src/UI/Popup/AutoApplyButtonVis.ts#L68](/src/UI/Popup/AutoApplyButtonVis.ts#L68) +Defined in [/src/UI/Popup/AutoApplyButtonVis.ts#L65](/src/UI/Popup/AutoApplyButtonVis.ts#L65) #### Example usage of auto_apply @@ -327,7 +354,7 @@ Gives an interactive element which shows a tag comparison between the OSM-object | host | _undefined_ | The domain name(s) where data might be fetched from - this is needed to set the CSP. A domain must include 'https', e.g. 'https://example.com'. For multiple domains, separate them with ';'. If you don't know the possible domains, use '*'. | | readonly | _undefined_ | If 'yes', will not show 'apply'-buttons | -Defined in [/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L237](/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L237) +Defined in [/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L243](/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L243) #### Example usage of compare_data @@ -387,7 +414,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | icon | ./assets/svg/addSmall.svg | A nice icon to show in the button | | way_to_conflate | _undefined_ | The key, of which the corresponding value is the id of the OSM-way that must be conflated; typically a calculatedTag | -Defined in [/src/UI/Popup/ImportButtons/ConflateImportButtonViz.ts#L25](/src/UI/Popup/ImportButtons/ConflateImportButtonViz.ts#L25) +Defined in [/src/UI/Popup/ImportButtons/ConflateImportButtonViz.ts#L30](/src/UI/Popup/ImportButtons/ConflateImportButtonViz.ts#L30) #### Example usage of conflate_button @@ -516,7 +543,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | snap_onto_layers | _undefined_ | If no existing nearby point exists, but a line of a specified layer is closeby, snap to this layer instead | | snap_to_layer_max_distance | 0.1 | Distance to distort the geometry to snap to this layer | -Defined in [/src/UI/Popup/ImportButtons/WayImportButtonViz.ts#L21](/src/UI/Popup/ImportButtons/WayImportButtonViz.ts#L21) +Defined in [/src/UI/Popup/ImportButtons/WayImportButtonViz.ts#L22](/src/UI/Popup/ImportButtons/WayImportButtonViz.ts#L22) #### Example usage of import_way_button @@ -534,7 +561,7 @@ Attempts to load (via a proxy) the specified website and parsed ld+json from the | mode | _undefined_ | If `display`, only show the data in tabular and readonly form, ignoring already existing tags. This is used to explicitly show all the tags. If unset or anything else, allow to apply/import on OSM | | collapsed | yes | If the containing accordion should be closed | -Defined in [/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L96](/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L96) +Defined in [/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L105](/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L105) #### Example usage of linked_data_from_website @@ -553,7 +580,7 @@ Change the status of the given MapRoulette task | maproulette_id | mr_taskId | The property name containing the maproulette id | | ask_feedback | _empty string_ | If not an empty string, this will be used as question to ask some additional feedback. A text field will be added | -Defined in [/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L20](/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L20) +Defined in [/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L25](/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts#L25) #### Example usage of maproulette_set_status @@ -614,7 +641,7 @@ Note that these values can be prepare with javascript in the theme by using a [c | id_of_object_to_apply_this_one | _undefined_ | If specified, applies the the tags onto _another_ object. The id will be read from properties[id_of_object_to_apply_this_one] of the selected object. The tags are still calculated based on the tags of the _selected_ element | | maproulette_id | _undefined_ | If specified, this maproulette-challenge will be closed when the tags are applied. This should be the `id` of the individual task, _not_ the task_id (which corresponds with the challenge). | -Defined in [/src/UI/SpecialVisualisations/TagApplyViz.ts#L13](/src/UI/SpecialVisualisations/TagApplyViz.ts#L13) +Defined in [/src/UI/SpecialVisualisations/TagApplyViz.ts#L17](/src/UI/SpecialVisualisations/TagApplyViz.ts#L17) #### Example usage of tag_apply @@ -628,7 +655,7 @@ These special visualisations are (mostly) interactive components that most eleme An element which allows to add a new point on the 'last_click'-location. Only makes sense in the layer `last_click` -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L261](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L261) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L235](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L235) #### Example usage of add_new_point @@ -638,7 +665,7 @@ Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L261](/src/ Adds a button which allows to delete the object at this location. The config will be read from the layer config -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L168](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L168) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L157](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L157) #### Example usage of delete_button @@ -653,7 +680,7 @@ Shows a 'nothing is currently known-message if there is at least one unanswered | text | _undefined_ | Text to show | | cssClasses | _undefined_ | Classes to apply onto the text | -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L228](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L228) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L207](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L207) #### Example usage of if_nothing_known @@ -669,7 +696,7 @@ A small map showing the selected feature. | idKey | id | The key of one or more properties of the feature, semi-colon separated. The corresponding value is interpreted as either the id or the a list of ID's. The features with these ID's will be shown on this minimap. | | class | h-40 rounded | CSS-classes (space-separated) that should be applied onto the container | -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L86](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L86) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L81](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L81) #### Example usage of minimap @@ -679,7 +706,7 @@ Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L86](/src/U Adds a button which allows to move the object to another location. The config will be read from the layer config -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L142](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L142) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L137](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L137) #### Example usage of move_button @@ -694,7 +721,7 @@ Generates a QR-code to share the selected object | text | _undefined_ | Extra text on the side of the QR-code | | textClass | _undefined_ | CSS class of the the side text | -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L195](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L195) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L178](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L178) #### Example usage of qr_code @@ -710,7 +737,7 @@ The special element which shows the questions which are unknown. Added by defaul | blacklisted-labels | _undefined_ | One or more ';'-separated labels of questions which should _not_ be included. Note that the questionbox which is added by default will blacklist 'hidden'. If both a whitelist and a blacklist are given, will show questions having at least one label from the whitelist but none of the blacklist. | | show_all | _undefined_ | Either `no`, `yes` or `user-preference`. Indicates if all questions should be shown at once | -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L30](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L30) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L31](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L31) #### Example usage of questions @@ -725,7 +752,7 @@ Creates a link that (attempts to) open the native 'share'-screen | url | _undefined_ | The url to share (default: current URL) | | text | _undefined_ | The text to show on the button. If none is given, will act as a titleIcon | -Defined in [/src/UI/Popup/ShareLinkViz.ts#L7](/src/UI/Popup/ShareLinkViz.ts#L7) +Defined in [/src/UI/Popup/ShareLinkViz.ts#L6](/src/UI/Popup/ShareLinkViz.ts#L6) #### Example usage of share_link @@ -735,7 +762,7 @@ Defined in [/src/UI/Popup/ShareLinkViz.ts#L7](/src/UI/Popup/ShareLinkViz.ts#L7) Adds a button which allows to split a way -Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L125](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L125) +Defined in [/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L123](/src/UI/SpecialVisualisations/UISpecialVisualisations.ts#L123) #### Example usage of split_button @@ -749,7 +776,7 @@ Elements relating to marking an object as favourite (giving it a heart). Default A small button that allows a (logged in) contributor to mark a location as a favourite location, sized to fit a title-icon -Defined in [/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L33](/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L33) +Defined in [/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L19](/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L19) #### Example usage of favourite_icon @@ -759,7 +786,7 @@ Defined in [/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L33](/src/U A button that allows a (logged in) contributor to mark a location as a favourite location -Defined in [/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L9](/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L9) +Defined in [/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L6](/src/UI/SpecialVisualisations/FavouriteVisualisations.ts#L6) #### Example usage of favourite_status @@ -777,7 +804,7 @@ Creates an image carousel for the given sources. An attempt will be made to gues -----|-----|----- | | image_key | image;mapillary;image;wikidata;wikimedia_commons;image;panoramax;image;image | The keys given to the images, e.g. if image is given, the first picture URL will be added as image, the second as image:0, the third as image:1, etc... Multiple values are allowed if ';'-separated | -Defined in [/src/UI/SpecialVisualisations/ImageVisualisations.ts#L57](/src/UI/SpecialVisualisations/ImageVisualisations.ts#L57) +Defined in [/src/UI/SpecialVisualisations/ImageVisualisations.ts#L48](/src/UI/SpecialVisualisations/ImageVisualisations.ts#L48) #### Example usage of image_carousel @@ -793,7 +820,7 @@ Creates a button where a user can upload an image to panoramax | label | _undefined_ | The text to show on the button | | disable_blur | _undefined_ | If set to 'true' or 'yes', then face blurring will be disabled. To be used sparingly | -Defined in [/src/UI/SpecialVisualisations/ImageVisualisations.ts#L91](/src/UI/SpecialVisualisations/ImageVisualisations.ts#L91) +Defined in [/src/UI/SpecialVisualisations/ImageVisualisations.ts#L82](/src/UI/SpecialVisualisations/ImageVisualisations.ts#L82) #### Example usage of image_upload @@ -808,7 +835,7 @@ A component showing nearby images loaded from various online services such as Ma | mode | closed | Either `open` or `closed`. If `open`, then the image carousel will always be shown | | readonly | _undefined_ | If 'readonly' or 'yes', will not show the 'link'-button | -Defined in [/src/UI/SpecialVisualisations/ImageVisualisations.ts#L15](/src/UI/SpecialVisualisations/ImageVisualisations.ts#L15) +Defined in [/src/UI/SpecialVisualisations/ImageVisualisations.ts#L12](/src/UI/SpecialVisualisations/ImageVisualisations.ts#L12) #### Example usage of nearby_images @@ -826,7 +853,7 @@ Adds an image to a node -----|-----|----- | | Id-key | id | The property name where the ID of the note to close can be found | -Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L124](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L124) +Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L115](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L115) #### Example usage of add_image_to_note @@ -840,7 +867,7 @@ A textfield to add a comment to a node (with the option to close the note). -----|-----|----- | | Id-key | id | The property name where the ID of the note to close can be found | -Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L81](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L81) +Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L79](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L79) #### Example usage of add_note_comment @@ -869,7 +896,7 @@ Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L22](/src/UI/Spe Creates a new map note on the given location. This options is placed in the 'last_click'-popup automatically if the 'notes'-layer is enabled -Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L102](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L102) +Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L98](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L98) #### Example usage of open_note @@ -884,7 +911,7 @@ Visualises the comments for notes | commentsKey | comments | The property name of the comments, which should be stringified json | | start | 0 | Drop the first 'start' comments | -Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L144](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L144) +Defined in [/src/UI/SpecialVisualisations/NoteVisualisations.ts#L136](/src/UI/SpecialVisualisations/NoteVisualisations.ts#L136) #### Example usage of visualize_note_comments @@ -904,7 +931,7 @@ Invites the contributor to leave a review. Somewhat small UI-element until inter | fallback | _undefined_ | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value | | question | _undefined_ | The question to ask during the review | -Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L20](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L20) +Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L22](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L22) #### Example usage of create_review @@ -919,7 +946,7 @@ Adds an overview of the mangrove-reviews of this object. Mangrove.Reviews needs | subjectKey | name | The key to use to determine the subject. If specified, the subject will be tags[subjectKey] | | fallback | _undefined_ | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value | -Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L83](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L83) +Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L88](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L88) #### Example usage of list_reviews @@ -934,7 +961,7 @@ Shows stars which represent the average rating on mangrove. | subjectKey | name | The key to use to determine the subject. If the value is specified, the subject will be tags[subjectKey] and will use this to filter the reviews. | | fallback | _undefined_ | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value | -Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L119](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L119) +Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L125](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L125) #### Example usage of rating @@ -950,7 +977,7 @@ A pragmatic combination of `create_review` and `list_reviews` | fallback | _undefined_ | The identifier to use, if tags[subjectKey] as specified above is not available. This is effectively a fallback value | | question | _undefined_ | The question to ask in the review form. Optional | -Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L178](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L178) +Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L182](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L182) #### Example usage of reviews @@ -968,7 +995,7 @@ A button which clears the locally downloaded data and the service worker. Login -----|-----|----- | | text | _undefined_ | The text to show on the button | -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L106](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L106) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L110](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L110) #### Example usage of clear_caches @@ -978,7 +1005,7 @@ Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L106](/src/U A button to remove the travelled track information from the device -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L218](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L218) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L215](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L215) #### Example usage of clear_location_history @@ -988,7 +1015,7 @@ Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L218](/src/U Shows which questions are disabled for every layer. Used in 'settings' -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L42](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L42) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L46](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L46) #### Example usage of disabled_questions @@ -998,7 +1025,7 @@ Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L42](/src/UI Shows the current tags of the GPS-representing object, used for debugging -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L65](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L65) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L69](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L69) #### Example usage of gps_all_tags @@ -1008,7 +1035,7 @@ Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L65](/src/UI Shows the current tags of the GPS-representing object, used for debugging -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L54](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L54) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L58](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L58) #### Example usage of gyroscope_all_tags @@ -1022,7 +1049,7 @@ Only makes sense in the usersettings. Allows to import a mangrove public key and -----|-----|----- | | text | _undefined_ | The text that is shown on the button | -Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L155](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L155) +Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L162](/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L162) #### Example usage of import_mangrove_key @@ -1032,7 +1059,7 @@ Defined in [/src/UI/SpecialVisualisations/ReviewSpecialVisualisations.ts#L155](/ A component to set the language of the user interface -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L22](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L22) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L26](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L26) #### Example usage of language_picker @@ -1047,7 +1074,7 @@ Show a login button | force | _undefined_ | Always show this button, even if logged in | | message | _undefined_ | Message to display on the button | -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L130](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L130) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L131](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L131) #### Example usage of login_button @@ -1057,7 +1084,7 @@ Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L130](/src/U Shows a button where the user can log out -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L195](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L195) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L192](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L192) #### Example usage of logout @@ -1067,7 +1094,7 @@ Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L195](/src/U A module showing the pending changes, with the option to clear the pending changes -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L207](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L207) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L204](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L204) #### Example usage of pending_changes @@ -1082,7 +1109,7 @@ A QR-code which shares the current URL and adds the login token. Anyone with thi | text | _undefined_ | Extra text on the side of the QR-code | | textClass | _undefined_ | CSS class of the the side text | -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L159](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L159) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L161](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L161) #### Example usage of qr_login @@ -1092,7 +1119,7 @@ Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L159](/src/U Shows the current state of storage -Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L82](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L82) +Defined in [/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L86](/src/UI/SpecialVisualisations/SettingsVisualisations.ts#L86) #### Example usage of storage_all_tags @@ -1112,7 +1139,7 @@ A collapsable group (accordion) | labels | _undefined_ | A `;`-separated list of either identifiers or label names. All tagRenderings matching this value will be shown in the accordion | | blacklist | _undefined_ | A `;`-separated list of either identifiers or label names. Matching tagrenderings will _not_ be included, even if they are in `labels` | -Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L179](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L179) +Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L176](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L176) #### Example usage of group @@ -1128,7 +1155,7 @@ Given an embedded tagRendering (read only) and a key, will read the keyname as a | tagrendering | _undefined_ | An entire tagRenderingConfig | | classes | _undefined_ | CSS-classes to apply on every individual item. Seperated by `space` | -Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L94](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L94) +Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L96](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L96) #### Example usage of multi @@ -1146,26 +1173,6 @@ Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisuali } ``` -### open_in_iD - -Opens the current view in the iD-editor - -Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L221](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L221) - -#### Example usage of open_in_iD - -`{open_in_iD()}` - -### open_in_josm - -Opens the current view in the JOSM-editor - -Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L235](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L235) - -#### Example usage of open_in_josm - -`{open_in_josm()}` - ### steal Shows a tagRendering from a different object as if this was the object itself @@ -1175,12 +1182,26 @@ Shows a tagRendering from a different object as if this was the object itself | featureId | _undefined_ | The key of the attribute which contains the id of the feature from which to use the tags | | tagRenderingId | _undefined_ | The layer-id and tagRenderingId to render. Can be multiple value if ';'-separated (in which case every value must also contain the layerId, e.g. `layerId.tagRendering0; layerId.tagRendering1`). Note: this can cause layer injection | -Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L22](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L22) +Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L23](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L23) #### Example usage of steal `{steal(,)}` +## ui + +Elements to support the user interface, e.g. 'title', 'translated' + +### preset_type_select + +An editable tag rendering which allows to change the type + +Defined in [/src/UI/Popup/DataVisualisations.ts#L231](/src/UI/Popup/DataVisualisations.ts#L231) + +#### Example usage of preset_type_select + +`{preset_type_select()}` + ## web_and_communication Tools to show data from external websites, which link to external websites or which link to external profiles @@ -1193,7 +1214,7 @@ Converts a fediverse username or link into a clickable link -----|-----|----- | | key | _undefined_ | The attribute-name containing the link | -Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L17](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L17) +Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L20](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L20) #### Example usage of fediverse_link @@ -1206,13 +1227,13 @@ Construct a link. By using the 'special' visualisation notation, translations sh | name | default | description | -----|-----|----- | | text | _undefined_ | Text to be shown | -| href | _undefined_ | The URL to link to. Note that this will be URI-encoded before | +| href | _undefined_ | The URL to link to. Note that this will be URI-encoded before and (as everything) supports substitutions of attributes | | class | _undefined_ | CSS-classes to add to the element | | download | _undefined_ | Expects a string which denotes the filename to download the contents of `href` into. If set, this link will act as a download-button. | | arialabel | _undefined_ | If set, this text will be used as aria-label | | icon | _undefined_ | If set, show this icon next to the link. You might want to combine this with `class: button` | -Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L139](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L139) +Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L147](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L147) #### Example usage of link @@ -1226,12 +1247,32 @@ Adds a button to open mapillary on the specified location -----|-----|----- | | zoom | 18 | The startzoom of mapillary | -Defined in [/src/UI/Popup/MapillaryLinkVis.ts#L8](/src/UI/Popup/MapillaryLinkVis.ts#L8) +Defined in [/src/UI/Popup/MapillaryLinkVis.ts#L7](/src/UI/Popup/MapillaryLinkVis.ts#L7) #### Example usage of mapillary_link `{mapillary_link(18)}` +### open_in_iD + +Opens the current view in the iD-editor + +Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L212](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L212) + +#### Example usage of open_in_iD + +`{open_in_iD()}` + +### open_in_josm + +Opens the current view in the JOSM-editor + +Defined in [/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L226](/src/UI/SpecialVisualisations/TagrenderingManipulationSpecialVisualisations.ts#L226) + +#### Example usage of open_in_josm + +`{open_in_josm()}` + ### send_email Creates a `mailto`-link where some fields are already set and correctly escaped. The user will be promted to send the email @@ -1243,7 +1284,7 @@ Creates a `mailto`-link where some fields are already set and correctly escaped. | body | _undefined_ | The text in the email | | button_text | _undefined_ | The text shown on the button in the UI | -Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L105](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L105) +Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L109](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L109) #### Example usage of send_email @@ -1257,7 +1298,7 @@ Shows the label of the corresponding wikidata-item -----|-----|----- | | keyToShowWikidataFor | wikidata | Use the wikidata entry from this key to show the label | -Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L67](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L67) +Defined in [/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L68](/src/UI/SpecialVisualisations/WebAndCommunicationSpecialVisualisations.ts#L68) #### Example usage of wikidata_label @@ -1285,7 +1326,7 @@ Various elements Exports the selected feature as GeoJson-file -Defined in [/src/UI/Popup/DataExportVisualisations.ts#L46](/src/UI/Popup/DataExportVisualisations.ts#L46) +Defined in [/src/UI/Popup/DataExportVisualisations.ts#L38](/src/UI/Popup/DataExportVisualisations.ts#L38) #### Example usage of export_as_geojson @@ -1295,7 +1336,7 @@ Defined in [/src/UI/Popup/DataExportVisualisations.ts#L46](/src/UI/Popup/DataExp Exports the selected feature as GPX-file -Defined in [/src/UI/Popup/DataExportVisualisations.ts#L14](/src/UI/Popup/DataExportVisualisations.ts#L14) +Defined in [/src/UI/Popup/DataExportVisualisations.ts#L12](/src/UI/Popup/DataExportVisualisations.ts#L12) #### Example usage of export_as_gpx @@ -1309,7 +1350,7 @@ Create a histogram for a list of given values, read from the properties. -----|-----|----- | | key | _undefined_ | The key to be read and to generate a histogram from | -Defined in [/src/UI/Popup/HistogramViz.ts#L7](/src/UI/Popup/HistogramViz.ts#L7) +Defined in [/src/UI/Popup/HistogramViz.ts#L11](/src/UI/Popup/HistogramViz.ts#L11) #### Example usage of histogram @@ -1325,10 +1366,10 @@ The language element allows to show and pick all known (modern) languages. The k | question | _undefined_ | What to ask if no questions are known | | render_list_item | {language()} | How a single language will be shown in the list of languages. Use `{language}` to indicate the language (which it must contain). | | render_single_language | _undefined_ | What will be shown if the feature only supports a single language | -| render_all | {list()} | The full rendering. Use `{list}` to show where the list of languages must come. Optional if mode=single | +| render_all | {list()} | The full rendering. U0se `{list}` to show where the list of languages must come. Optional if mode=single | | no_known_languages | _undefined_ | The text that is shown if no languages are known for this key. If this text is omitted, the languages will be prompted instead | -Defined in [/src/UI/Popup/LanguageElement/LanguageElement.ts#L9](/src/UI/Popup/LanguageElement/LanguageElement.ts#L9) +Defined in [/src/UI/Popup/LanguageElement/LanguageElement.ts#L5](/src/UI/Popup/LanguageElement/LanguageElement.ts#L5) #### Example usage of language_chooser @@ -1362,31 +1403,11 @@ Defined in [/src/UI/Popup/MultiApplyViz.ts#L7](/src/UI/Popup/MultiApplyViz.ts#L7 {multi_apply(_features_with_the_same_name_within_100m, name:etymology:wikidata;name:etymology, Apply etymology information on all nearby objects with the same name)} -### preset_description - -Shows the extra description from the presets of the layer, if one matches. It will pick the most specific one (e.g. if preset `A` implies `B`, but `B` does not imply `A`, it'll pick B) or the first one if no ordering can be made. Might be empty - -Defined in [/src/UI/Popup/DataVisualisations.ts#L221](/src/UI/Popup/DataVisualisations.ts#L221) - -#### Example usage of preset_description - -`{preset_description()}` - -### preset_type_select - -An editable tag rendering which allows to change the type - -Defined in [/src/UI/Popup/DataVisualisations.ts#L239](/src/UI/Popup/DataVisualisations.ts#L239) - -#### Example usage of preset_type_select - -`{preset_type_select()}` - ### upload_to_osm Uploads the GPS-history as GPX to OpenStreetMap.org; clears the history afterwards. The actual feature is ignored. -Defined in [/src/UI/Popup/UploadToOsmViz.ts#L12](/src/UI/Popup/UploadToOsmViz.ts#L12) +Defined in [/src/UI/Popup/UploadToOsmViz.ts#L17](/src/UI/Popup/UploadToOsmViz.ts#L17) #### Example usage of upload_to_osm diff --git a/Docs/TagInfo/mapcomplete_nature.json b/Docs/TagInfo/mapcomplete_nature.json index 3ee579109..3f8fe39ba 100644 --- a/Docs/TagInfo/mapcomplete_nature.json +++ b/Docs/TagInfo/mapcomplete_nature.json @@ -26,37 +26,37 @@ }, { "key": "id", - "description": "id~.+ is displayed as \"You just created this element! Thanks for sharing this info with the world and helping people worldwide.\" by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, Shelter, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", + "description": "id~.+ is displayed as \"You just created this element! Thanks for sharing this info with the world and helping people worldwide.\" by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Shelter, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/visitor_information_centre.md#just_created", "icon_url": "./assets/svg/party.svg" }, { "key": "image", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, Shelter, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Shelter, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/visitor_information_centre.md#images", "icon_url": "./assets/layers/visitor_information_centre/information.svg" }, { "key": "panoramax", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, Shelter, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Shelter, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/visitor_information_centre.md#images", "icon_url": "./assets/layers/visitor_information_centre/information.svg" }, { "key": "mapillary", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, Shelter, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Shelter, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/visitor_information_centre.md#images", "icon_url": "./assets/layers/visitor_information_centre/information.svg" }, { "key": "wikidata", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, Shelter, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Shelter, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/visitor_information_centre.md#images", "icon_url": "./assets/layers/visitor_information_centre/information.svg" }, { "key": "wikipedia", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, Shelter, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers Visitor Information Centre, Drinking water, Bird watching places, Nature reserve, Shelter, Maps, Information boards, Benches, Picnic tables, Toilets, Guideposts, BBQ, Firepit, Insect Hotels, Artworks, Artificial nesting sites, Tree, Observation towers, Viewpoint", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/visitor_information_centre.md#images", "icon_url": "./assets/layers/visitor_information_centre/information.svg" }, @@ -1652,6 +1652,68 @@ "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/nature_reserve.md#wikipedia", "icon_url": "./assets/layers/nature_reserve/nature_reserve.svg" }, + { + "key": "amenity", + "value": "shelter", + "description": "Features with this tag are displayed by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "description": "Values of `shelter_type` are shown with \"Shelter type: {shelter_type}\" and can be updated. The question is \"What kind of shelter is this?\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "value": "public_transport", + "description": "shelter_type=public_transport is displayed as \"This is a shelter at a public transport stop.\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "value": "picnic_shelter", + "description": "shelter_type=picnic_shelter is displayed as \"This is a shelter protecting from rain at a picnic site.\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "value": "gazebo", + "description": "shelter_type=gazebo is displayed as \"This is a gazebo.\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "value": "weather_shelter", + "description": "shelter_type=weather_shelter is displayed as \"This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads.\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "value": "lean_to", + "description": "shelter_type=lean_to is displayed as \"This is a shed with 3 walls, primarily intended for camping.\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "value": "pavilion", + "description": "shelter_type=pavilion is displayed as \"This is a pavilion\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, + { + "key": "shelter_type", + "value": "basic_hut", + "description": "shelter_type=basic_hut is displayed as \"This is a basic hut, providing basic shelter and sleeping facilities.\" by layer Shelter", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", + "icon_url": "./assets/layers/shelter/shelter.svg" + }, { "key": "tourism", "value": "map", @@ -2470,68 +2532,6 @@ "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/guidepost.md#ele", "icon_url": "./assets/layers/guidepost/guidepost.svg" }, - { - "key": "amenity", - "value": "shelter", - "description": "Features with this tag are displayed by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "description": "Values of `shelter_type` are shown with \"Shelter type: {shelter_type}\" and can be updated. The question is \"What kind of shelter is this?\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "value": "public_transport", - "description": "shelter_type=public_transport is displayed as \"This is a shelter at a public transport stop.\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "value": "picnic_shelter", - "description": "shelter_type=picnic_shelter is displayed as \"This is a shelter protecting from rain at a picnic site.\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "value": "gazebo", - "description": "shelter_type=gazebo is displayed as \"This is a gazebo.\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "value": "weather_shelter", - "description": "shelter_type=weather_shelter is displayed as \"This is a small shelter, primarily intended for short breaks. Usually found in the mountains or alongside roads.\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "value": "lean_to", - "description": "shelter_type=lean_to is displayed as \"This is a shed with 3 walls, primarily intended for camping.\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "value": "pavilion", - "description": "shelter_type=pavilion is displayed as \"This is a pavilion\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, - { - "key": "shelter_type", - "value": "basic_hut", - "description": "shelter_type=basic_hut is displayed as \"This is a basic hut, providing basic shelter and sleeping facilities.\" by layer Shelter", - "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/shelter.md#shelter_type", - "icon_url": "./assets/layers/shelter/shelter.svg" - }, { "key": "amenity", "value": "bbq", diff --git a/Docs/TagInfo/mapcomplete_pets.json b/Docs/TagInfo/mapcomplete_pets.json index 3b2bdfd57..dce126c7b 100644 --- a/Docs/TagInfo/mapcomplete_pets.json +++ b/Docs/TagInfo/mapcomplete_pets.json @@ -27,43 +27,43 @@ { "key": "dog", "value": "unleashed", - "description": "Features with this tag are displayed by layers dog parks, Dog friendly eateries", + "description": "Features with this tag are displayed by layers dog parks, Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, { "key": "id", - "description": "id~.+ is displayed as \"You just created this element! Thanks for sharing this info with the world and helping people worldwide.\" by layers dog parks, veterinary, Animal shelters, Dog toilets, Dog friendly eateries, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", + "description": "id~.+ is displayed as \"You just created this element! Thanks for sharing this info with the world and helping people worldwide.\" by layers dog parks, veterinary, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#just_created", "icon_url": "./assets/svg/party.svg" }, { "key": "image", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#images", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, { "key": "panoramax", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#images", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, { "key": "mapillary", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#images", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, { "key": "wikidata", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#images", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, { "key": "wikipedia", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary by layers dog parks, Animal shelters, Dog toilets, Dog friendly eateries, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Waste baskets with excrement bag dispensers, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#images", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, @@ -75,7 +75,7 @@ }, { "key": "opening_hours", - "description": "Values of `opening_hours` are shown with \"

Opening hours

{opening_hours_table(opening_hours)}\" and can be updated. The question is \"What are the opening hours of {title()}?\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `opening_hours` are shown with \"

Opening hours

{opening_hours_table(opening_hours)}\" and can be updated. The question is \"What are the opening hours of {title()}?\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#opening_hours_24_7", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, @@ -89,19 +89,19 @@ { "key": "opening_hours", "value": "closed", - "description": "opening_hours=closed is displayed as \"Marked as closed for an unspecified time\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "opening_hours=closed is displayed as \"Marked as closed for an unspecified time\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#opening_hours_24_7", "icon_url": "./assets/layers/dogpark/dog-park.svg" }, { "key": "website", - "description": "Values of `website` are shown with \"{website}\" and can be updated. The question is \"What is the website of {title()}?\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `website` are shown with \"{website}\" and can be updated. The question is \"What is the website of {title()}?\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#website", "icon_url": "./assets/layers/icons/website.svg" }, { "key": "contact:website", - "description": "contact:website~.+ is displayed as \"{contact:website}\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "contact:website~.+ is displayed as \"{contact:website}\" by layers dog parks, veterinary, Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/dogpark.md#website", "icon_url": "./assets/layers/icons/website.svg" }, @@ -142,13 +142,13 @@ }, { "key": "phone", - "description": "Values of `phone` are shown with \"{link(&LBRACEphone&RBRACE,tel:&LBRACEphone&RBRACE,,,,)}\" and can be updated. The question is \"What is the phone number of {title()}?\" by layers veterinary, Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `phone` are shown with \"{link(&LBRACEphone&RBRACE,tel:&LBRACEphone&RBRACE,,,,)}\" and can be updated. The question is \"What is the phone number of {title()}?\" by layers veterinary, Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/veterinary.md#phone", "icon_url": "./assets/layers/questions/phone.svg" }, { "key": "contact:phone", - "description": "contact:phone~.+ is displayed as \"{link(&LBRACEcontact:phone&RBRACE,tel:&LBRACEcontact:phone&RBRACE,,,,)}\" by layers veterinary, Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "contact:phone~.+ is displayed as \"{link(&LBRACEcontact:phone&RBRACE,tel:&LBRACEcontact:phone&RBRACE,,,,)}\" by layers veterinary, Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/veterinary.md#phone", "icon_url": "./assets/layers/questions/phone.svg" }, @@ -173,19 +173,19 @@ }, { "key": "email", - "description": "Values of `email` are shown with \"{email}\" and can be updated. The question is \"What is the email address of {title()}?\" by layers Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `email` are shown with \"{email}\" and can be updated. The question is \"What is the email address of {title()}?\" by layers Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/animal_shelter.md#email", "icon_url": "./assets/svg/envelope.svg" }, { "key": "contact:email", - "description": "contact:email~.+ is displayed as \"{contact:email}\" by layers Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "contact:email~.+ is displayed as \"{contact:email}\" by layers Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/animal_shelter.md#email", "icon_url": "./assets/svg/envelope.svg" }, { "key": "operator:email", - "description": "operator:email~.+ is displayed as \"{operator:email}\" by layers Animal shelters, Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "operator:email~.+ is displayed as \"{operator:email}\" by layers Animal shelters, Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/animal_shelter.md#email", "icon_url": "./assets/svg/envelope.svg" }, @@ -316,14 +316,14 @@ { "key": "dog", "value": "leashed", - "description": "Features with this tag are displayed by layers Dog friendly eateries, Dog-friendly shops", + "description": "Features with this tag are displayed by layers Dog friendly eateries, Dog friendly drinking places, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "dog", "value": "yes", - "description": "Features with this tag are displayed by layers Dog friendly eateries, Dog-friendly shops", + "description": "Features with this tag are displayed by layers Dog friendly eateries, Dog friendly drinking places, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md", "icon_url": "./assets/layers/food/restaurant.svg" }, @@ -350,89 +350,89 @@ { "key": "payment:cash", "value": "yes", - "description": "payment:cash=yes is displayed as \"Cash is accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "payment:cash=yes is displayed as \"Cash is accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#payment_options", "icon_url": "./assets/layers/questions/cash.svg" }, { "key": "payment:cards", "value": "yes", - "description": "payment:cards=yes is displayed as \"Payment cards are accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "payment:cards=yes is displayed as \"Payment cards are accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#payment_options", "icon_url": "./assets/layers/questions/payment_card.svg" }, { "key": "payment:qr_code", "value": "yes", - "description": "payment:qr_code=yes is displayed as \"Payment by QR-code is possible here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "payment:qr_code=yes is displayed as \"Payment by QR-code is possible here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#payment_options", "icon_url": "./assets/layers/questions/qrcode.svg" }, { "key": "level", - "description": "Values of `level` are shown with \"Located on the {level}th floor\" and can be updated. The question is \"On what level is this feature located?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "Values of `level` are shown with \"Located on the {level}th floor\" and can be updated. The question is \"On what level is this feature located?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "location", "value": "underground", - "description": "location=underground is displayed as \"Located underground\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "location=underground is displayed as \"Located underground\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "level", "value": "0", - "description": "level=0 is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "level=0 is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "level", - "description": "level= is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "level= is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "level", "value": "1", - "description": "level=1 is displayed as \"Located on the first floor\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "level=1 is displayed as \"Located on the first floor\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "level", "value": "-1", - "description": "level=-1 is displayed as \"Located on the first basement level\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "level=-1 is displayed as \"Located on the first basement level\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wheelchair", "value": "designated", - "description": "wheelchair=designated is displayed as \"This place is specially adapted for wheelchair users\" by layer Dog friendly eateries", + "description": "wheelchair=designated is displayed as \"This place is specially adapted for wheelchair users\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_access", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wheelchair", "value": "yes", - "description": "wheelchair=yes is displayed as \"This place is easily reachable with a wheelchair\" by layer Dog friendly eateries", + "description": "wheelchair=yes is displayed as \"This place is easily reachable with a wheelchair\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_access", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wheelchair", "value": "limited", - "description": "wheelchair=limited is displayed as \"It is possible to reach this place in a wheelchair, but it is not easy\" by layer Dog friendly eateries", + "description": "wheelchair=limited is displayed as \"It is possible to reach this place in a wheelchair, but it is not easy\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_access", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wheelchair", "value": "no", - "description": "wheelchair=no is displayed as \"This place is not reachable with a wheelchair\" by layer Dog friendly eateries", + "description": "wheelchair=no is displayed as \"This place is not reachable with a wheelchair\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_access", "icon_url": "./assets/layers/food/restaurant.svg" }, @@ -710,14 +710,14 @@ { "key": "outdoor_seating", "value": "yes", - "description": "outdoor_seating=yes is displayed as \"This place has outdoor seating\" by layer Dog friendly eateries", + "description": "outdoor_seating=yes is displayed as \"This place has outdoor seating\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#seating", "icon_url": "./assets/layers/outdoor_seating/outdoor_seating.svg" }, { "key": "indoor_seating", "value": "yes", - "description": "indoor_seating=yes is displayed as \"This place has indoor seating\" by layer Dog friendly eateries", + "description": "indoor_seating=yes is displayed as \"This place has indoor seating\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#seating", "icon_url": "./assets/layers/food/restaurant.svg" }, @@ -1164,949 +1164,1053 @@ { "key": "smoking", "value": "yes", - "description": "smoking=yes is displayed as \"Smoking is allowed\" by layer Dog friendly eateries", + "description": "smoking=yes is displayed as \"Smoking is allowed\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#smoking", "icon_url": "./assets/layers/questions/smoking.svg" }, { "key": "smoking", "value": "no", - "description": "smoking=no is displayed as \"Smoking is not allowed\" by layer Dog friendly eateries", + "description": "smoking=no is displayed as \"Smoking is not allowed\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#smoking", "icon_url": "./assets/layers/questions/no_smoking.svg" }, { "key": "smoking", "value": "outside", - "description": "smoking=outside is displayed as \"Smoking is allowed outside.\" by layer Dog friendly eateries", + "description": "smoking=outside is displayed as \"Smoking is allowed outside.\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#smoking", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "service:electricity", "value": "yes", - "description": "service:electricity=yes is displayed as \"There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics\" by layer Dog friendly eateries", + "description": "service:electricity=yes is displayed as \"There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#service_electricity", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "service:electricity", "value": "limited", - "description": "service:electricity=limited is displayed as \"There are a few domestic sockets available to customers seated indoors, where they can charge their electronics\" by layer Dog friendly eateries", + "description": "service:electricity=limited is displayed as \"There are a few domestic sockets available to customers seated indoors, where they can charge their electronics\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#service_electricity", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "service:electricity", "value": "ask", - "description": "service:electricity=ask is displayed as \"There are no sockets available indoors to customers, but charging might be possible if the staff is asked\" by layer Dog friendly eateries", + "description": "service:electricity=ask is displayed as \"There are no sockets available indoors to customers, but charging might be possible if the staff is asked\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#service_electricity", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "service:electricity", "value": "no", - "description": "service:electricity=no is displayed as \"There are a no domestic sockets available to customers seated indoors\" by layer Dog friendly eateries", + "description": "service:electricity=no is displayed as \"There are a no domestic sockets available to customers seated indoors\" by layers Dog friendly eateries, Dog friendly drinking places", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#service_electricity", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "dog", "value": "yes", - "description": "dog=yes is displayed as \"Dogs are allowed\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "dog=yes is displayed as \"Dogs are allowed\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#dog_access", "icon_url": "./assets/layers/questions/dogs_allowed.svg" }, { "key": "dog", "value": "no", - "description": "dog=no is displayed as \"Dogs are not allowed\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "dog=no is displayed as \"Dogs are not allowed\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#dog_access", "icon_url": "./assets/layers/questions/no_dogs.svg" }, { "key": "dog", "value": "leashed", - "description": "dog=leashed is displayed as \"Dogs are allowed, but they have to be leashed\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "dog=leashed is displayed as \"Dogs are allowed, but they have to be leashed\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#dog_access", "icon_url": "./assets/layers/questions/dogs_leashed.svg" }, { "key": "dog", "value": "unleashed", - "description": "dog=unleashed is displayed as \"Dogs are allowed and can run around freely\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "dog=unleashed is displayed as \"Dogs are allowed and can run around freely\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#dog_access", "icon_url": "./assets/layers/questions/dogs_allowed.svg" }, { "key": "dog", "value": "outside", - "description": "dog=outside is displayed as \"Dogs are allowed only outside\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "dog=outside is displayed as \"Dogs are allowed only outside\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#dog_access", "icon_url": "./assets/layers/questions/dogs_outside.svg" }, { "key": "internet_access", "value": "wlan", - "description": "internet_access=wlan is displayed as \"This place offers wireless internet access\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access=wlan is displayed as \"This place offers wireless internet access\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet", "icon_url": "wifi" }, { "key": "internet_access", "value": "no", - "description": "internet_access=no is displayed as \"This place does not offer internet access\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access=no is displayed as \"This place does not offer internet access\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet", "icon_url": "wifi;cross_bottom_right:red" }, { "key": "internet_access", "value": "yes", - "description": "internet_access=yes is displayed as \"This place offers internet access\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access=yes is displayed as \"This place offers internet access\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "internet_access", "value": "terminal", - "description": "internet_access=terminal is displayed as \"This place offers internet access via a terminal or computer\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access=terminal is displayed as \"This place offers internet access via a terminal or computer\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet", "icon_url": "computer" }, { "key": "internet_access", "value": "wired", - "description": "internet_access=wired is displayed as \"This place offers wired internet access\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access=wired is displayed as \"This place offers wired internet access\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "internet_access", "value": "terminal;wlan", - "description": "internet_access=terminal;wlan is displayed as \"This place offers both wireless internet and internet access via a terminal or computer\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access=terminal;wlan is displayed as \"This place offers both wireless internet and internet access via a terminal or computer\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "internet_access:fee", "value": "yes", - "description": "internet_access:fee=yes is displayed as \"There is a fee for the internet access at this place\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access:fee=yes is displayed as \"There is a fee for the internet access at this place\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet_fee", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "internet_access:fee", "value": "no", - "description": "internet_access:fee=no is displayed as \"Internet access is free at this place\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access:fee=no is displayed as \"Internet access is free at this place\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet_fee", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "internet_access:fee", "value": "customers", - "description": "internet_access:fee=customers is displayed as \"Internet access is free at this place, for customers only\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access:fee=customers is displayed as \"Internet access is free at this place, for customers only\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet_fee", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "internet_access:ssid", - "description": "Values of `internet_access:ssid` are shown with \"The network name is {internet_access:ssid}\" and can be updated. The question is \"What is the network name for the wireless internet access?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `internet_access:ssid` are shown with \"The network name is {internet_access:ssid}\" and can be updated. The question is \"What is the network name for the wireless internet access?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet_ssid", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "internet_access:ssid", "value": "Telekom", - "description": "internet_access:ssid=Telekom is displayed as \"Telekom\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "internet_access:ssid=Telekom is displayed as \"Telekom\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#internet_ssid", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets", "value": "no", - "description": "toilets=no is displayed as \"Does not have toilets\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets=no is displayed as \"Does not have toilets\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#grouptitle", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets", "value": "yes", - "description": "toilets=yes is displayed as \"Has toilets\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets=yes is displayed as \"Has toilets\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#has_toilets", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets", "value": "no", - "description": "toilets=no is displayed as \"Has no toilets\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets=no is displayed as \"Has no toilets\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#has_toilets", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets", "value": "separate", - "description": "toilets=separate is displayed as \"The toilets are marked separately on the map\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets=separate is displayed as \"The toilets are marked separately on the map\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#has_toilets", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "image", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "panoramax", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "mapillary", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wikidata", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wikipedia", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:level", - "description": "Values of `toilets:level` are shown with \"Located on the {toilets:level}th floor\" and can be updated. The question is \"On what level is this feature located?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `toilets:level` are shown with \"Located on the {toilets:level}th floor\" and can be updated. The question is \"On what level is this feature located?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:location", "value": "underground", - "description": "toilets:location=underground is displayed as \"Located underground\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:location=underground is displayed as \"Located underground\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:level", "value": "0", - "description": "toilets:level=0 is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:level=0 is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:level", - "description": "toilets:level= is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:level= is displayed as \"Located on the ground floor\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:level", "value": "1", - "description": "toilets:level=1 is displayed as \"Located on the first floor\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:level=1 is displayed as \"Located on the first floor\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:level", "value": "-1", - "description": "toilets:level=-1 is displayed as \"Located on the first basement level\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:level=-1 is displayed as \"Located on the first basement level\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_single_level", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:access", - "description": "Values of `toilets:access` are shown with \"Access is {toilets:access}\" and can be updated. The question is \"Are these toilets publicly accessible?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `toilets:access` are shown with \"Access is {toilets:access}\" and can be updated. The question is \"Are these toilets publicly accessible?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_access", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:access", "value": "yes", - "description": "toilets:access=yes is displayed as \"Public access\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:access=yes is displayed as \"Public access\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_access", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:access", "value": "customers", - "description": "toilets:access=customers is displayed as \"Only access to customers\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:access=customers is displayed as \"Only access to customers\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_access", "icon_url": "key" }, { "key": "toilets:access", "value": "no", - "description": "toilets:access=no is displayed as \"Not accessible\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:access=no is displayed as \"Not accessible\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_access", "icon_url": "lock" }, { "key": "toilets:access", "value": "key", - "description": "toilets:access=key is displayed as \"Accessible, but one has to ask a key to enter\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:access=key is displayed as \"Accessible, but one has to ask a key to enter\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_access", "icon_url": "key" }, { "key": "toilets:fee", "value": "yes", - "description": "toilets:fee=yes is displayed as \"These are paid toilets\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:fee=yes is displayed as \"These are paid toilets\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilets_fee", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:fee", "value": "no", - "description": "toilets:fee=no is displayed as \"Free to use\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:fee=no is displayed as \"Free to use\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilets_fee", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:charge", - "description": "Values of `toilets:charge` are shown with \"The fee is {toilets:charge}\" and can be updated. The question is \"How much does one have to pay for these toilets?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `toilets:charge` are shown with \"The fee is {toilets:charge}\" and can be updated. The question is \"How much does one have to pay for these toilets?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_charge", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:payment:cash", "value": "yes", - "description": "toilets:payment:cash=yes is displayed as \"Cash is accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:payment:cash=yes is displayed as \"Cash is accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_payment_options_split", "icon_url": "./assets/layers/questions/cash.svg" }, { "key": "toilets:payment:cards", "value": "yes", - "description": "toilets:payment:cards=yes is displayed as \"Payment cards are accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:payment:cards=yes is displayed as \"Payment cards are accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_payment_options_split", "icon_url": "./assets/layers/questions/payment_card.svg" }, { "key": "toilets:payment:qr_code", "value": "yes", - "description": "toilets:payment:qr_code=yes is displayed as \"Payment by QR-code is possible here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:payment:qr_code=yes is displayed as \"Payment by QR-code is possible here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_payment_options_split", "icon_url": "./assets/layers/questions/qrcode.svg" }, { "key": "toilets:payment:coins", "value": "yes", - "description": "toilets:payment:coins=yes is displayed as \"Coins are accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:payment:coins=yes is displayed as \"Coins are accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_payment_options_split", "icon_url": "./assets/layers/questions/coins.svg" }, { "key": "toilets:payment:notes", "value": "yes", - "description": "toilets:payment:notes=yes is displayed as \"Bank notes are accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:payment:notes=yes is displayed as \"Bank notes are accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_payment_options_split", "icon_url": "./assets/layers/questions/notes.svg" }, { "key": "toilets:payment:debit_cards", "value": "yes", - "description": "toilets:payment:debit_cards=yes is displayed as \"Debit cards are accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:payment:debit_cards=yes is displayed as \"Debit cards are accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_payment_options_split", "icon_url": "./assets/layers/questions/payment_card.svg" }, { "key": "toilets:payment:credit_cards", "value": "yes", - "description": "toilets:payment:credit_cards=yes is displayed as \"Credit cards are accepted here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:payment:credit_cards=yes is displayed as \"Credit cards are accepted here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_payment_options_split", "icon_url": "./assets/layers/questions/payment_card.svg" }, { "key": "toilets:gender_segregated", "value": "yes", - "description": "toilets:gender_segregated=yes is displayed as \"There is a separate, signposted area for men and women\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:gender_segregated=yes is displayed as \"There is a separate, signposted area for men and women\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_gender_segregated", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:gender_segregated", "value": "no", - "description": "toilets:gender_segregated=no is displayed as \"There is no separate, signposted area for men and women\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:gender_segregated=no is displayed as \"There is no separate, signposted area for men and women\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_gender_segregated", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:supervised", "value": "yes", - "description": "toilets:supervised=yes is displayed as \"There is a person supervising these toilets during (most of) the opening hours\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:supervised=yes is displayed as \"There is a person supervising these toilets during (most of) the opening hours\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_supervised", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:supervised", "value": "interval", - "description": "toilets:supervised=interval is displayed as \"There is a person supervising these toilets, but they are present only during certain times of the opening hours\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:supervised=interval is displayed as \"There is a person supervising these toilets, but they are present only during certain times of the opening hours\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_supervised", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:supervised", "value": "no", - "description": "toilets:supervised=no is displayed as \"These toilets are not supervised\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:supervised=no is displayed as \"These toilets are not supervised\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilet_supervised", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:description", - "description": "Values of `toilets:description` are shown with \"{toilets:description}\" and can be updated. The question is \"Is there still some relevant info that the previous questions did not cover? Feel free to add it here.\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Values of `toilets:description` are shown with \"{toilets:description}\" and can be updated. The question is \"Is there still some relevant info that the previous questions did not cover? Feel free to add it here.\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_description", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair", "value": "yes", - "description": "toilets:wheelchair=yes is displayed as \"There is a dedicated toilet for wheelchair users\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:wheelchair=yes is displayed as \"There is a dedicated toilet for wheelchair users\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilets_wheelchair", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair", "value": "no", - "description": "toilets:wheelchair=no is displayed as \"No wheelchair access\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:wheelchair=no is displayed as \"No wheelchair access\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilets_wheelchair", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair", "value": "designated", - "description": "toilets:wheelchair=designated is displayed as \"There is only a dedicated toilet for wheelchair users\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "toilets:wheelchair=designated is displayed as \"There is only a dedicated toilet for wheelchair users\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_toilets_wheelchair", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:position", "value": "seated", - "description": "toilets:position=seated is displayed as \"There are only seated toilets\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:position=seated is displayed as \"There are only seated toilets\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_type", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:position", "value": "urinal", - "description": "toilets:position=urinal is displayed as \"There are only urinals here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:position=urinal is displayed as \"There are only urinals here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_type", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:position", "value": "squat", - "description": "toilets:position=squat is displayed as \"There are only squat toilets here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:position=squat is displayed as \"There are only squat toilets here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_type", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:position", "value": "seated;urinal", - "description": "toilets:position=seated;urinal is displayed as \"Both seated toilets and urinals are available here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:position=seated;urinal is displayed as \"Both seated toilets and urinals are available here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_type", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:disposal", "value": "flush", - "description": "toilets:disposal=flush is displayed as \"The waste is moved away by flushing the toilet with water\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:disposal=flush is displayed as \"The waste is moved away by flushing the toilet with water\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_disposal", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:disposal", "value": "pitlatrine", - "description": "toilets:disposal=pitlatrine is displayed as \"The waste falls into a pit\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:disposal=pitlatrine is displayed as \"The waste falls into a pit\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_disposal", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:disposal", "value": "bucket", - "description": "toilets:disposal=bucket is displayed as \"The waste is collected in a bucket or similar container, which is regularly removed\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:disposal=bucket is displayed as \"The waste is collected in a bucket or similar container, which is regularly removed\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_disposal", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:menstrual_products", "value": "yes", - "description": "toilets:menstrual_products=yes is displayed as \"Free menstrual products are available to all visitors of these toilets\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:menstrual_products=yes is displayed as \"Free menstrual products are available to all visitors of these toilets\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#menstrual_products", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:menstrual_products", "value": "limited", - "description": "toilets:menstrual_products=limited is displayed as \"Free menstrual products are available to some visitors of these toilets\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:menstrual_products=limited is displayed as \"Free menstrual products are available to some visitors of these toilets\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#menstrual_products", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:menstrual_products", "value": "no", - "description": "toilets:menstrual_products=no is displayed as \"No free menstrual products are available here\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:menstrual_products=no is displayed as \"No free menstrual products are available here\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#menstrual_products", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:menstrual_products:location", - "description": "Values of `toilets:menstrual_products:location` are shown with \"The menstrual products are located in {toilets:menstrual_products:location}\" and can be updated. The question is \"Where are the free menstrual products located?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "Values of `toilets:menstrual_products:location` are shown with \"The menstrual products are located in {toilets:menstrual_products:location}\" and can be updated. The question is \"Where are the free menstrual products located?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#menstrual_products_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:menstrual_products:location", "value": "female_toilet", - "description": "toilets:menstrual_products:location=female_toilet is displayed as \"The free, menstrual products are located in the toilet for women\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:menstrual_products:location=female_toilet is displayed as \"The free, menstrual products are located in the toilet for women\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#menstrual_products_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:menstrual_products:location", "value": "male_toilet", - "description": "toilets:menstrual_products:location=male_toilet is displayed as \"The free, menstrual products are located in the toilet for men\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:menstrual_products:location=male_toilet is displayed as \"The free, menstrual products are located in the toilet for men\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#menstrual_products_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:menstrual_products:location", "value": "wheelchair_toilet", - "description": "toilets:menstrual_products:location=wheelchair_toilet is displayed as \"The free, menstrual products are located in the toilet for wheelchair users\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:menstrual_products:location=wheelchair_toilet is displayed as \"The free, menstrual products are located in the toilet for wheelchair users\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#menstrual_products_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table", "value": "yes", - "description": "changing_table=yes is displayed as \"A changing table is available\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table=yes is displayed as \"A changing table is available\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_changing_table", "icon_url": "./assets/layers/toilet/baby.svg" }, { "key": "changing_table", "value": "no", - "description": "changing_table=no is displayed as \"No changing table is available\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table=no is displayed as \"No changing table is available\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_changing_table", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:location", - "description": "Values of `changing_table:location` are shown with \"A changing table is located at {changing_table:location}\" and can be updated. The question is \"Where is the changing table located?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "Values of `changing_table:location` are shown with \"A changing table is located at {changing_table:location}\" and can be updated. The question is \"Where is the changing table located?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_changing_table_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:location", "value": "female_toilet", - "description": "changing_table:location=female_toilet is displayed as \"A changing table is in the toilet for women\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:location=female_toilet is displayed as \"A changing table is in the toilet for women\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_changing_table_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:location", "value": "male_toilet", - "description": "changing_table:location=male_toilet is displayed as \"A changing table is in the toilet for men\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:location=male_toilet is displayed as \"A changing table is in the toilet for men\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_changing_table_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:location", "value": "wheelchair_toilet", - "description": "changing_table:location=wheelchair_toilet is displayed as \"A changing table is in the toilet for wheelchair users\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:location=wheelchair_toilet is displayed as \"A changing table is in the toilet for wheelchair users\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_changing_table_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:location", "value": "dedicated_room", - "description": "changing_table:location=dedicated_room is displayed as \"A changing table is in a dedicated room\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:location=dedicated_room is displayed as \"A changing table is in a dedicated room\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_changing_table_location", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:paper_supplied", "value": "yes", - "description": "toilets:paper_supplied=yes is displayed as \"This toilet is equipped with toilet paper\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:paper_supplied=yes is displayed as \"This toilet is equipped with toilet paper\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_has_paper", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:paper_supplied", "value": "no", - "description": "toilets:paper_supplied=no is displayed as \"You have to bring your own toilet paper to this toilet\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:paper_supplied=no is displayed as \"You have to bring your own toilet paper to this toilet\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_has_paper", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:handwashing", "value": "yes", - "description": "toilets:handwashing=yes is displayed as \"These toilets have a sink to wash your hands\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:handwashing=yes is displayed as \"These toilets have a sink to wash your hands\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_handwashing", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:handwashing", "value": "no", - "description": "toilets:handwashing=no is displayed as \"These toilets don't have a sink to wash your hands\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:handwashing=no is displayed as \"These toilets don't have a sink to wash your hands\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_handwashing", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "handwashing:soap", "value": "yes", - "description": "handwashing:soap=yes is displayed as \"Soap for handwashing is provided\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "handwashing:soap=yes is displayed as \"Soap for handwashing is provided\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#handwashing_soap", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "handwashing:soap", "value": "no", - "description": "handwashing:soap=no is displayed as \"No soap for handwashing\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "handwashing:soap=no is displayed as \"No soap for handwashing\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#handwashing_soap", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:hands_drying", "value": "electric_hand_dryer", - "description": "toilets:hands_drying=electric_hand_dryer is displayed as \"Electric hand dryers are available for drying hands.\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:hands_drying=electric_hand_dryer is displayed as \"Electric hand dryers are available for drying hands.\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_drying", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:hands_drying", "value": "paper_towel", - "description": "toilets:hands_drying=paper_towel is displayed as \"Paper towels are available for drying hands.\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:hands_drying=paper_towel is displayed as \"Paper towels are available for drying hands.\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_drying", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:hands_drying", "value": "towel_cabinet", - "description": "toilets:hands_drying=towel_cabinet is displayed as \"A towel roll cabinet is available for drying hands\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:hands_drying=towel_cabinet is displayed as \"A towel roll cabinet is available for drying hands\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_drying", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:hands_drying", "value": "towel", - "description": "toilets:hands_drying=towel is displayed as \"A fabric towel available to dry your hands.\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:hands_drying=towel is displayed as \"A fabric towel available to dry your hands.\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_drying", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:hands_drying", "value": "no", - "description": "toilets:hands_drying=no is displayed as \"There are no hand drying facilities available.\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:hands_drying=no is displayed as \"There are no hand drying facilities available.\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_drying", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "image", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "panoramax", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "mapillary", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wikidata", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wikipedia", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "image", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "panoramax", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "mapillary", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wikidata", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wikipedia", - "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Pet stores, Dog-friendly shops", + "description": "Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary (This is only shown if ((wheelchair=yes & amenity=toilets) | toilets:wheelchair=yes) & toilets=yes) by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#images", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wheelchair", "value": "designated", - "description": "wheelchair=designated | toilets:wheelchair=designated is displayed as \"Wheelchair accessibility features\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "wheelchair=designated | toilets:wheelchair=designated is displayed as \"Wheelchair accessibility features\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_title", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair", "value": "designated", - "description": "wheelchair=designated | toilets:wheelchair=designated is displayed as \"Wheelchair accessibility features\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "wheelchair=designated | toilets:wheelchair=designated is displayed as \"Wheelchair accessibility features\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_title", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "wheelchair", "value": "no", - "description": "wheelchair=no | toilets:wheelchair=no is displayed as \"No wheelchair accessible toilet\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "wheelchair=no | toilets:wheelchair=no is displayed as \"No wheelchair accessible toilet\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_title", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair", "value": "no", - "description": "wheelchair=no | toilets:wheelchair=no is displayed as \"No wheelchair accessible toilet\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "wheelchair=no | toilets:wheelchair=no is displayed as \"No wheelchair accessible toilet\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_title", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:access", "value": "yes", - "description": "toilets:wheelchair:access=yes is displayed as \"The wheelchair accessible toilets are freely accessible\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:access=yes is displayed as \"The wheelchair accessible toilets are freely accessible\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_wheelchair_access", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:access", "value": "key", - "description": "toilets:wheelchair:access=key is displayed as \"One needs to ask permission to access wheelchair-accessible toilet, e.g. by asking a key\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:access=key is displayed as \"One needs to ask permission to access wheelchair-accessible toilet, e.g. by asking a key\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_wheelchair_access", "icon_url": "key" }, { "key": "centralkey", "value": "mlak", - "description": "centralkey=mlak is displayed as \"One can use a Master Locksmiths Access Key (MLAK) to access this bathroom\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "centralkey=mlak is displayed as \"One can use a Master Locksmiths Access Key (MLAK) to access this bathroom\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_wheelchair_access", "icon_url": "./assets/layers/toilet/MLAK.svg" }, { "key": "centralkey", "value": "nks", - "description": "centralkey=nks is displayed as \"One can use a RADAR Key to access this bathroom\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "centralkey=nks is displayed as \"One can use a RADAR Key to access this bathroom\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_wheelchair_access", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "centralkey", "value": "eurokey", - "description": "centralkey=eurokey is displayed as \"One can use a EuroKey to access this bathroom\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "centralkey=eurokey is displayed as \"One can use a EuroKey to access this bathroom\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilet_wheelchair_access", "icon_url": "./assets/layers/toilet/eurokey.svg" }, { "key": "toilets:wheelchair:grab_rail:left", "value": "yes", - "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on both sides\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on both sides\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:right", "value": "yes", - "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on both sides\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on both sides\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:left", "value": "yes", - "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=no is displayed as \"Only grab rails on the left side\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=no is displayed as \"Only grab rails on the left side\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:right", "value": "no", - "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=no is displayed as \"Only grab rails on the left side\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=no is displayed as \"Only grab rails on the left side\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:left", "value": "no", - "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on the right side\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on the right side\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:right", "value": "yes", - "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on the right side\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=yes is displayed as \"Grab rails on the right side\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:left", "value": "no", - "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=no is displayed as \"No grab rails at all\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=no is displayed as \"No grab rails at all\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:right", "value": "no", - "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=no is displayed as \"No grab rails at all\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=no is displayed as \"No grab rails at all\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_lr", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:behind", "value": "yes", - "description": "toilets:wheelchair:grab_rail:behind=yes is displayed as \"Has a grab rail behind the toilet\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:behind=yes is displayed as \"Has a grab rail behind the toilet\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_behind", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:behind", "value": "no", - "description": "toilets:wheelchair:grab_rail:behind=no is displayed as \"No grab rail behind the toilet\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:behind=no is displayed as \"No grab rail behind the toilet\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_has_grab_rail_behind", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:foldable:left", "value": "yes", - "description": "toilets:wheelchair:grab_rail:foldable:left=yes is displayed as \"The left grab rail is foldable\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:foldable:left=yes is displayed as \"The left grab rail is foldable\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_is_foldable_left", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:foldable:left", "value": "no", - "description": "toilets:wheelchair:grab_rail:foldable:left=no is displayed as \"The left grab rail is not foldable\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:foldable:left=no is displayed as \"The left grab rail is not foldable\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_is_foldable_left", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:foldable:right", "value": "yes", - "description": "toilets:wheelchair:grab_rail:foldable:right=yes is displayed as \"The right grab rail is foldable\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:foldable:right=yes is displayed as \"The right grab rail is foldable\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_is_foldable_right", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "toilets:wheelchair:grab_rail:foldable:right", "value": "no", - "description": "toilets:wheelchair:grab_rail:foldable:right=no is displayed as \"The right grab rail is not foldable\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "toilets:wheelchair:grab_rail:foldable:right=no is displayed as \"The right grab rail is not foldable\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#toilets_wheelchair_is_foldable_right", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "door:width", - "description": "Values of `door:width` are shown with \"The door to the wheelchair-accessible toilet is {canonical(door:width)} wide\" and can be updated. The question is \"What is the width of the door to the wheelchair accessible toilet?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "Values of `door:width` are shown with \"The door to the wheelchair-accessible toilet is {canonical(door:width)} wide\" and can be updated. The question is \"What is the width of the door to the wheelchair accessible toilet?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#wheelchair_door_width", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult", "value": "yes", - "description": "changing_table:adult=yes is displayed as \"Has a changing table for adults\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult=yes is displayed as \"Has a changing table for adults\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#adult_changing_table", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult", "value": "no", - "description": "changing_table:adult=no is displayed as \"No changing table for adults\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult=no is displayed as \"No changing table for adults\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#adult_changing_table", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:height", - "description": "Values of `changing_table:adult:height` are shown with \"The changing table is {canonical(changing_table:adult:height)} high\" and can be updated. The question is \"What is the height of the adult changing table?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "Values of `changing_table:adult:height` are shown with \"The changing table is {canonical(changing_table:adult:height)} high\" and can be updated. The question is \"What is the height of the adult changing table?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_height", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:height", "value": "adjustable", - "description": "changing_table:adult:height=adjustable is displayed as \"The changing table is adjustable in height\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult:height=adjustable is displayed as \"The changing table is adjustable in height\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_height", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:min_height", - "description": "Values of `changing_table:adult:min_height` are shown with \"The lowest height of the adult changing table is {canonical(changing_table:adult:min_height)}\" and can be updated. The question is \"What is the lowest height the adult changing table can be moved to?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "Values of `changing_table:adult:min_height` are shown with \"The lowest height of the adult changing table is {canonical(changing_table:adult:min_height)}\" and can be updated. The question is \"What is the lowest height the adult changing table can be moved to?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_adult_changing_table_min_height", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:max_height", - "description": "Values of `changing_table:adult:max_height` are shown with \"The highest height of the adult changing table is {canonical(changing_table:adult:max_height)}\" and can be updated. The question is \"What is the highest height the adult changing table can be moved to?\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "Values of `changing_table:adult:max_height` are shown with \"The highest height of the adult changing table is {canonical(changing_table:adult:max_height)}\" and can be updated. The question is \"What is the highest height the adult changing table can be moved to?\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_adult_changing_table_max_height", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:height:mechanism", "value": "manual", - "description": "changing_table:adult:height:mechanism=manual is displayed as \"The height of the adult changing table is adjusted manually\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult:height:mechanism=manual is displayed as \"The height of the adult changing table is adjusted manually\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_adult_changing_table_mechanism", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:height:mechanism", "value": "electric", - "description": "changing_table:adult:height:mechanism=electric is displayed as \"The height of the adult changing table is adjusted electrically\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult:height:mechanism=electric is displayed as \"The height of the adult changing table is adjusted electrically\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_adult_changing_table_mechanism", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:support", "value": "wall_mounted", - "description": "changing_table:adult:support=wall_mounted is displayed as \"The changing table is mounted to the wall\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult:support=wall_mounted is displayed as \"The changing table is mounted to the wall\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_adult_changing_table_support", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:support", "value": "legs", - "description": "changing_table:adult:support=legs is displayed as \"The changing table stands on table legs\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult:support=legs is displayed as \"The changing table stands on table legs\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_adult_changing_table_support", "icon_url": "./assets/layers/food/restaurant.svg" }, { "key": "changing_table:adult:support", "value": "wheels", - "description": "changing_table:adult:support=wheels is displayed as \"The changing table stands on table legs with wheels and can be moved\" by layers Dog friendly eateries, Pet stores, Dog-friendly shops, Toilets", + "description": "changing_table:adult:support=wheels is displayed as \"The changing table stands on table legs with wheels and can be moved\" by layers Dog friendly eateries, Dog friendly drinking places, Pet stores, Dog-friendly shops, Toilets", "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/food_dog_friendly.md#changing_table_adult_adult_changing_table_support", "icon_url": "./assets/layers/food/restaurant.svg" }, + { + "key": "amenity", + "value": "bar", + "description": "Features with this tag are displayed by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "pub", + "description": "Features with this tag are displayed by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "cafe", + "description": "Features with this tag are displayed by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "biergarten", + "description": "Features with this tag are displayed by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "nightclub", + "description": "Features with this tag are displayed by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "name", + "description": "Values of `name` are shown with \"This business is named {name}\" and can be updated. The question is \"What is the name of this business?\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#Name", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "pub", + "description": "amenity=pub is displayed as \"A pub, mostly for drinking beers in a warm, relaxed interior\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#Classification", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "bar", + "description": "amenity=bar is displayed as \"A more modern and commercial bar, possibly with a music and light installation\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#Classification", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "cafe", + "description": "amenity=cafe is displayed as \"A cafe to drink tea, coffee or an alcoholical bevarage in a quiet environment\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#Classification", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "restaurant", + "description": "amenity=restaurant is displayed as \"A restaurant where one can get a proper meal\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#Classification", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "biergarten", + "description": "amenity=biergarten is displayed as \"An open space where beer is served, typically seen in Germany\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#Classification", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "amenity", + "value": "nightclub", + "description": "amenity=nightclub is displayed as \"This is a nightclub or disco with a focus on dancing, music by a DJ with accompanying light show and a bar to get (alcoholic) drinks\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#Classification", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "reusable_packaging:accept", + "value": "yes", + "description": "reusable_packaging:accept=yes is displayed as \"Accepts reusable cups\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#pub_reusable_packaging", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "reusable_packaging:accept", + "value": "no", + "description": "reusable_packaging:accept=no is displayed as \"Does not accept reusable cups\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#pub_reusable_packaging", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, + { + "key": "reusable_packaging:accept", + "value": "only", + "description": "reusable_packaging:accept=only is displayed as \"Only serves to people who bring reusable cups\" by layer Dog friendly drinking places", + "doc_url": "https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/Layers/cafe_pub_dog_friendly.md#pub_reusable_packaging", + "icon_url": "./assets/layers/cafe_pub/pub.svg" + }, { "key": "shop", "value": "pet", diff --git a/Docs/Themes/fritures.md b/Docs/Themes/fritures.md index 2d2645c88..5b5350c23 100644 --- a/Docs/Themes/fritures.md +++ b/Docs/Themes/fritures.md @@ -258,7 +258,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -537,7 +537,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Themes/glutenfree.md b/Docs/Themes/glutenfree.md index 85c2686c6..bd1247742 100644 --- a/Docs/Themes/glutenfree.md +++ b/Docs/Themes/glutenfree.md @@ -453,7 +453,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -741,7 +741,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` @@ -1588,7 +1588,7 @@ Elements must match **all** of the following expressions: | [show-menu-image](#show-menu-image)
_(Original in [food](./food.md#show-menu-image))_ | _{image_carousel(image:menu)}_ | menu | _Multiple choice only_ | | [add-menu-image](#add-menu-image)
_(Original in [food](./food.md#add-menu-image))_ | _{image_upload(image:menu,Add an image from the menu,)}_ | menu | _Multiple choice only_ | | [menu-website](#menu-website)
_(Original in [food](./food.md#menu-website))_ | On what webpage is the menu published?
_{link(Consult the menu,&LBRACEwebsite:menu&RBRACE,,,,)}_ | menu | *[website:menu](https://wiki.osm.org/wiki/Key:website:menu)* ([url](../SpecialInputElements.md#url)) | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -1760,7 +1760,7 @@ This tagrendering has labels `menu` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Themes/grb.md b/Docs/Themes/grb.md index 31275519f..394792d38 100644 --- a/Docs/Themes/grb.md +++ b/Docs/Themes/grb.md @@ -76,7 +76,6 @@ These layers can not be reused in different themes. # osm_buildings_no_points - This layer is shown at zoomlevel **17** and higher - - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` No themes use this layer @@ -85,9 +84,9 @@ No themes use this layer Elements must match **all** of the following expressions: 0. id~^(way\/.*)$ | id~^(relation\/.*)$ -1. building~.+ +1. building~.+ | building:part~.+ -[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B%28%20%20%20%20nwr%5B%22id%22~%22%5E%28way%5C%2F.*%29%24%22%5D%5B%22building%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22id%22~%22%5E%28relation%5C%2F.*%29%24%22%5D%5B%22building%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B%28%20%20%20%20nwr%5B%22id%22~%22%5E%28way%5C%2F.*%29%24%22%5D%5B%22building%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22id%22~%22%5E%28way%5C%2F.*%29%24%22%5D%5B%22building%3Apart%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22id%22~%22%5E%28relation%5C%2F.*%29%24%22%5D%5B%22building%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22id%22~%22%5E%28relation%5C%2F.*%29%24%22%5D%5B%22building%3Apart%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) ## Supported attributes diff --git a/Docs/Themes/historic_rolling_stock.md b/Docs/Themes/historic_rolling_stock.md index 497e15dbd..5a97549a7 100644 --- a/Docs/Themes/historic_rolling_stock.md +++ b/Docs/Themes/historic_rolling_stock.md @@ -9,6 +9,7 @@ The theme introduction reads: This theme contains the following layers: - [historic_rolling_stock](../Layers/historic_rolling_stock.md) + - [railway](../Layers/railway.md) Available languages: diff --git a/Docs/Themes/lactosefree.md b/Docs/Themes/lactosefree.md index ed941ec9b..26fa901d9 100644 --- a/Docs/Themes/lactosefree.md +++ b/Docs/Themes/lactosefree.md @@ -451,7 +451,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [gluten_free](#gluten_free)
_(Original in [diets](./diets.md#gluten_free))_ | Does this shop have a gluten free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -739,7 +739,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` @@ -1586,7 +1586,7 @@ Elements must match **all** of the following expressions: | [show-menu-image](#show-menu-image)
_(Original in [food](./food.md#show-menu-image))_ | _{image_carousel(image:menu)}_ | menu | _Multiple choice only_ | | [add-menu-image](#add-menu-image)
_(Original in [food](./food.md#add-menu-image))_ | _{image_upload(image:menu,Add an image from the menu,)}_ | menu | _Multiple choice only_ | | [menu-website](#menu-website)
_(Original in [food](./food.md#menu-website))_ | On what webpage is the menu published?
_{link(Consult the menu,&LBRACEwebsite:menu&RBRACE,,,,)}_ | menu | *[website:menu](https://wiki.osm.org/wiki/Key:website:menu)* ([url](../SpecialInputElements.md#url)) | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [gluten_free](#gluten_free)
_(Original in [diets](./diets.md#gluten_free))_ | Does this shop have a gluten free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -1758,7 +1758,7 @@ This tagrendering has labels `menu` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` diff --git a/Docs/Themes/nature.md b/Docs/Themes/nature.md index 3166804ff..8b17557ba 100644 --- a/Docs/Themes/nature.md +++ b/Docs/Themes/nature.md @@ -12,13 +12,13 @@ This theme contains the following layers: - [drinking_water](../Layers/drinking_water.md) - [birdhide](../Layers/birdhide.md) - [nature_reserve](../Layers/nature_reserve.md) + - [shelter](../Layers/shelter.md) - [map](../Layers/map.md) - [information_board](../Layers/information_board.md) - [bench](../Layers/bench.md) - [picnic_table](../Layers/picnic_table.md) - [toilet](../Layers/toilet.md) - [guidepost](../Layers/guidepost.md) - - [shelter](../Layers/shelter.md) - [bbq](../Layers/bbq.md) - [firepit](../Layers/firepit.md) - [insect_hotel](../Layers/insect_hotel.md) diff --git a/Docs/Themes/personal.md b/Docs/Themes/personal.md index cdfee5510..ede48812d 100644 --- a/Docs/Themes/personal.md +++ b/Docs/Themes/personal.md @@ -94,6 +94,7 @@ This theme contains the following layers: - [postboxes](../Layers/postboxes.md) - [postoffices](../Layers/postoffices.md) - [public_bookcase](../Layers/public_bookcase.md) + - [railway](../Layers/railway.md) - [rainbow_crossings](../Layers/rainbow_crossings.md) - [reception_desk](../Layers/reception_desk.md) - [recycling](../Layers/recycling.md) diff --git a/Docs/Themes/pets.md b/Docs/Themes/pets.md index e0e9b3c71..89c0ed00d 100644 --- a/Docs/Themes/pets.md +++ b/Docs/Themes/pets.md @@ -14,6 +14,8 @@ This theme contains the following layers: - [dog_toilet](../Layers/dog_toilet.md) - [food_dog_friendly (defined in this theme)](#food_dog_friendly) - [food](../Layers/food.md) + - [cafe_pub_dog_friendly (defined in this theme)](#cafe_pub_dog_friendly) + - [cafe_pub](../Layers/cafe_pub.md) - [pet_shops (defined in this theme)](#pet_shops) - [shop_dog_friendly (defined in this theme)](#shop_dog_friendly) - [shops](../Layers/shops.md) @@ -143,7 +145,81 @@ Available languages: + [lod](#lod) + [spacer](#spacer) - [Filters](#filters) -3. [pet_shops](#pet_shops) +3. [cafe_pub_dog_friendly](#cafe_pub_dog_friendly) + - [Basic tags for this layer](#basic-tags-for-this-layer) + - [Supported attributes](#supported-attributes) + - [Featureview elements and TagRenderings](#featureview-elements-and-tagrenderings) + + [images](#images) + + [reviews](#reviews) + + [Name](#name) + + [Classification](#classification) + + [opening_hours](#opening_hours) + + [website](#website) + + [email](#email) + + [phone](#phone) + + [payment-options](#payment-options) + + [repeated](#repeated) + + [single_level](#single_level) + + [smoking](#smoking) + + [wheelchair-access](#wheelchair-access) + + [pub_reusable_packaging](#pub_reusable_packaging) + + [service:electricity](#serviceelectricity) + + [seating](#seating) + + [dog-access](#dog-access) + + [internet](#internet) + + [internet-fee](#internet-fee) + + [internet-ssid](#internet-ssid) + + [toilets-group](#toilets-group) + + [grouptitle](#grouptitle) + + [has_toilets](#has_toilets) + + [images_toilet](#images_toilet) + + [toilets_repeated](#toilets_repeated) + + [toilets_single_level](#toilets_single_level) + + [toilets_toilet-access](#toilets_toilet-access) + + [toilets_toilets-fee](#toilets_toilets-fee) + + [toilets_toilet-charge](#toilets_toilet-charge) + + [toilets_payment-options-split](#toilets_payment-options-split) + + [toilets_gender_segregated](#toilets_gender_segregated) + + [toilets_toilet-supervised](#toilets_toilet-supervised) + + [toilets_description](#toilets_description) + + [toilets_toilets-wheelchair](#toilets_toilets-wheelchair) + + [toilets-type](#toilets-type) + + [toilets-disposal](#toilets-disposal) + + [menstrual_products](#menstrual_products) + + [menstrual_products_location](#menstrual_products_location) + + [toilets-changing-table](#toilets-changing-table) + + [toilet-changing_table:location](#toilet-changing_tablelocation) + + [toilet-has-paper](#toilet-has-paper) + + [toilet-handwashing](#toilet-handwashing) + + [handwashing-soap](#handwashing-soap) + + [toilet-drying](#toilet-drying) + + [wheelchair-group](#wheelchair-group) + + [wheelchair-picture-carousel](#wheelchair-picture-carousel) + + [wheelchair-picture](#wheelchair-picture) + + [wheelchair-title](#wheelchair-title) + + [toilet-wheelchair-access](#toilet-wheelchair-access) + + [toilets_wheelchair_has_grab_rail_lr](#toilets_wheelchair_has_grab_rail_lr) + + [toilets_wheelchair_has_grab_rail_behind](#toilets_wheelchair_has_grab_rail_behind) + + [toilets_wheelchair_is_foldable_left](#toilets_wheelchair_is_foldable_left) + + [toilets_wheelchair_is_foldable_right](#toilets_wheelchair_is_foldable_right) + + [wheelchair-door-width](#wheelchair-door-width) + + [questions-wheelchair](#questions-wheelchair) + + [adult_changing_table_title](#adult_changing_table_title) + + [adult-changing-table](#adult-changing-table) + + [changing_table_adult_height](#changing_table_adult_height) + + [changing_table_adult_adult-changing-table-min_height](#changing_table_adult_adult-changing-table-min_height) + + [changing_table_adult_adult-changing-table-max_height](#changing_table_adult_adult-changing-table-max_height) + + [changing_table_adult_adult-changing-table-mechanism](#changing_table_adult_adult-changing-table-mechanism) + + [changing_table_adult_adult-changing-table-support](#changing_table_adult_adult-changing-table-support) + + [questions-adult-changing-table](#questions-adult-changing-table) + + [toilet-question-box](#toilet-question-box) + + [leftover-questions](#leftover-questions) + + [move-button](#move-button) + + [delete-button](#delete-button) + + [lod](#lod) + + [spacer](#spacer) + - [Filters](#filters) +4. [pet_shops](#pet_shops) - [Presets](#presets) - [Basic tags for this layer](#basic-tags-for-this-layer) - [Supported attributes](#supported-attributes) @@ -255,7 +331,7 @@ Available languages: + [lod](#lod) + [spacer](#spacer) - [Filters](#filters) -4. [shop_dog_friendly](#shop_dog_friendly) +5. [shop_dog_friendly](#shop_dog_friendly) - [Basic tags for this layer](#basic-tags-for-this-layer) - [Supported attributes](#supported-attributes) - [Featureview elements and TagRenderings](#featureview-elements-and-tagrenderings) @@ -366,7 +442,7 @@ Available languages: + [lod](#lod) + [spacer](#spacer) - [Filters](#filters) -5. [waste_basket_dogs](#waste_basket_dogs) +6. [waste_basket_dogs](#waste_basket_dogs) - [Basic tags for this layer](#basic-tags-for-this-layer) - [Supported attributes](#supported-attributes) - [Featureview elements and TagRenderings](#featureview-elements-and-tagrenderings) @@ -504,7 +580,7 @@ Elements must match **all** of the following expressions: | [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | | [child_highchair](#child_highchair)
_(Original in [questions](./BuiltinQuestions.md#child_highchair))_ | Is there a high chair (also known as booster chair) for toddlers available here?
_{highchair} highchairs are available_
4 options | | *[highchair](https://wiki.osm.org/wiki/Key:highchair)* ([nat](../SpecialInputElements.md#nat)) | | [kids_area](#kids_area)
_(Original in [questions](./BuiltinQuestions.md#kids_area))_ | Is there a play area for kids
5 options | | _Multiple choice only_ | -| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | +| [diets_title](#diets_title)
_(Original in [diets](./diets.md#diets_title))_ | _Dietary options{show_icons(diets_content,inline-flex float-right)}_ | diets_group, diets_grouped, hidden | _Multiple choice only_ | | [diets_group](#diets_group)
_(Original in [diets](./diets.md#diets_group))_ | _{group(diets_title,diets_content,)}_ | diets_grouped | _Multiple choice only_ | | [sugar_free](#sugar_free)
_(Original in [diets](./diets.md#sugar_free))_ | Does this shop have a sugar free offering?
4 options | diets_grouped, diets_content, hidden | _Multiple choice only_ | | [lactose_free](#lactose_free)
_(Original in [diets](./diets.md#lactose_free))_ | Does have a lactose-free offering?
4 options | diets_content, diets_grouped, hidden | _Multiple choice only_ | @@ -783,7 +859,7 @@ The question is `Is there a play area for kids` ### diets_title _This tagrendering has no question and is thus read-only_ -*Dietary options* +*Dietary options{show_icons(diets_content,inline-flex float-right)}* This tagrendering has labels `diets_group` `diets_grouped` `hidden` @@ -1546,6 +1622,811 @@ _This tagrendering has no question and is thus read-only_ -----|-----|----- | | has_internet.0 | Offers internet | internet_access=wlan | internet_access=yes | internet_access=wired | +# cafe_pub_dog_friendly + +This layer is based on [cafe_pub](../Layers/cafe_pub.md) + +A layer showing cafés and pubs where one can gather around a drink. The layer asks for some relevant questions + + - This layer is shown at zoomlevel **12** and higher + +No themes use this layer + +## Basic tags for this layer + +Elements must match **all** of the following expressions: + +0. amenity=bar | amenity=pub | amenity=cafe | amenity=biergarten | amenity=nightclub +1. dog=unleashed | dog=leashed | dog=yes + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B%28%20%20%20%20nwr%5B%22amenity%22%3D%22bar%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22bar%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22bar%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22pub%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22pub%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22pub%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22cafe%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22cafe%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22cafe%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22biergarten%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22biergarten%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22biergarten%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22nightclub%22%5D%5B%22dog%22%3D%22unleashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22nightclub%22%5D%5B%22dog%22%3D%22leashed%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B%22amenity%22%3D%22nightclub%22%5D%5B%22dog%22%3D%22yes%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + +## Supported attributes + +**Warning:**: this quick overview is incomplete + +| attribute | type | values which are supported by this layer | +-----|-----|----- | +| [name](https://wiki.openstreetmap.org/wiki/Key:name) | [string](../SpecialInputElements.md#string) | | +| [amenity](https://wiki.openstreetmap.org/wiki/Key:amenity) | Multiple choice | [amenity=pub](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dpub) [amenity=bar](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dbar) [amenity=cafe](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dcafe) [amenity=restaurant](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Drestaurant) [amenity=biergarten](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dbiergarten) [amenity=nightclub](https://wiki.openstreetmap.org/wiki/Tag:amenity%3Dnightclub) | +| [opening_hours](https://wiki.openstreetmap.org/wiki/Key:opening_hours) | [opening_hours](../SpecialInputElements.md#opening_hours) | | +| [website](https://wiki.openstreetmap.org/wiki/Key:website) | [url](../SpecialInputElements.md#url) | | +| [email](https://wiki.openstreetmap.org/wiki/Key:email) | [email](../SpecialInputElements.md#email) | | +| [phone](https://wiki.openstreetmap.org/wiki/Key:phone) | [phone](../SpecialInputElements.md#phone) | | +| [level](https://wiki.openstreetmap.org/wiki/Key:level) | [float](../SpecialInputElements.md#float) | [level=0](https://wiki.openstreetmap.org/wiki/Tag:level%3D0) [level=1](https://wiki.openstreetmap.org/wiki/Tag:level%3D1) [level=-1](https://wiki.openstreetmap.org/wiki/Tag:level%3D-1) | +| [smoking](https://wiki.openstreetmap.org/wiki/Key:smoking) | Multiple choice | [smoking=yes](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dyes) [smoking=no](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Dno) [smoking=outside](https://wiki.openstreetmap.org/wiki/Tag:smoking%3Doutside) | +| [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [wheelchair=designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [wheelchair=yes](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dyes) [wheelchair=limited](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dlimited) [wheelchair=no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) | +| [reusable_packaging:accept](https://wiki.openstreetmap.org/wiki/Key:reusable_packaging:accept) | Multiple choice | [reusable_packaging:accept=yes](https://wiki.openstreetmap.org/wiki/Tag:reusable_packaging:accept%3Dyes) [reusable_packaging:accept=no](https://wiki.openstreetmap.org/wiki/Tag:reusable_packaging:accept%3Dno) [reusable_packaging:accept=only](https://wiki.openstreetmap.org/wiki/Tag:reusable_packaging:accept%3Donly) | +| [service:electricity](https://wiki.openstreetmap.org/wiki/Key:service:electricity) | Multiple choice | [service:electricity=yes](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dyes) [service:electricity=limited](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dlimited) [service:electricity=ask](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dask) [service:electricity=no](https://wiki.openstreetmap.org/wiki/Tag:service:electricity%3Dno) | +| [dog](https://wiki.openstreetmap.org/wiki/Key:dog) | Multiple choice | [dog=yes](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dyes) [dog=no](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dno) [dog=leashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dleashed) [dog=unleashed](https://wiki.openstreetmap.org/wiki/Tag:dog%3Dunleashed) [dog=outside](https://wiki.openstreetmap.org/wiki/Tag:dog%3Doutside) | +| [internet_access](https://wiki.openstreetmap.org/wiki/Key:internet_access) | Multiple choice | [internet_access=wlan](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwlan) [internet_access=no](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dno) [internet_access=terminal](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dterminal) [internet_access=wired](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dwired) [internet_access=terminal;wlan](https://wiki.openstreetmap.org/wiki/Tag:internet_access%3Dterminal;wlan) | +| [internet_access:fee](https://wiki.openstreetmap.org/wiki/Key:internet_access:fee) | Multiple choice | [internet_access:fee=yes](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dyes) [internet_access:fee=no](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dno) [internet_access:fee=customers](https://wiki.openstreetmap.org/wiki/Tag:internet_access:fee%3Dcustomers) | +| [internet_access:ssid](https://wiki.openstreetmap.org/wiki/Key:internet_access:ssid) | [string](../SpecialInputElements.md#string) | [internet_access:ssid=Telekom](https://wiki.openstreetmap.org/wiki/Tag:internet_access:ssid%3DTelekom) | +| [toilets](https://wiki.openstreetmap.org/wiki/Key:toilets) | Multiple choice | [toilets=no](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dno) | +| [toilets](https://wiki.openstreetmap.org/wiki/Key:toilets) | Multiple choice | [toilets=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dyes) [toilets=no](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dno) [toilets=separate](https://wiki.openstreetmap.org/wiki/Tag:toilets%3Dseparate) | +| [toilets:level](https://wiki.openstreetmap.org/wiki/Key:toilets:level) | [float](../SpecialInputElements.md#float) | [toilets:level=0](https://wiki.openstreetmap.org/wiki/Tag:toilets:level%3D0) [toilets:level=1](https://wiki.openstreetmap.org/wiki/Tag:toilets:level%3D1) [toilets:level=-1](https://wiki.openstreetmap.org/wiki/Tag:toilets:level%3D-1) | +| [toilets:access](https://wiki.openstreetmap.org/wiki/Key:toilets:access) | [string](../SpecialInputElements.md#string) | [toilets:access=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dyes) [toilets:access=customers](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dcustomers) [toilets:access=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dno) [toilets:access=key](https://wiki.openstreetmap.org/wiki/Tag:toilets:access%3Dkey) | +| [toilets:fee](https://wiki.openstreetmap.org/wiki/Key:toilets:fee) | Multiple choice | [toilets:fee=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dyes) [toilets:fee=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:fee%3Dno) | +| [toilets:charge](https://wiki.openstreetmap.org/wiki/Key:toilets:charge) | [string](../SpecialInputElements.md#string) | | +| [toilets:gender_segregated](https://wiki.openstreetmap.org/wiki/Key:toilets:gender_segregated) | Multiple choice | [toilets:gender_segregated=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:gender_segregated%3Dyes) [toilets:gender_segregated=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:gender_segregated%3Dno) | +| [toilets:supervised](https://wiki.openstreetmap.org/wiki/Key:toilets:supervised) | Multiple choice | [toilets:supervised=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:supervised%3Dyes) [toilets:supervised=interval](https://wiki.openstreetmap.org/wiki/Tag:toilets:supervised%3Dinterval) [toilets:supervised=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:supervised%3Dno) | +| [toilets:description](https://wiki.openstreetmap.org/wiki/Key:toilets:description) | [text](../SpecialInputElements.md#text) | | +| [toilets:wheelchair](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair) | Multiple choice | [toilets:wheelchair=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dyes) [toilets:wheelchair=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Dno) [toilets:wheelchair=designated](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair%3Ddesignated) | +| [toilets:position](https://wiki.openstreetmap.org/wiki/Key:toilets:position) | Multiple choice | [toilets:position=seated](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated) [toilets:position=urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Durinal) [toilets:position=squat](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dsquat) [toilets:position=seated;urinal](https://wiki.openstreetmap.org/wiki/Tag:toilets:position%3Dseated;urinal) | +| [toilets:disposal](https://wiki.openstreetmap.org/wiki/Key:toilets:disposal) | Multiple choice | [toilets:disposal=flush](https://wiki.openstreetmap.org/wiki/Tag:toilets:disposal%3Dflush) [toilets:disposal=pitlatrine](https://wiki.openstreetmap.org/wiki/Tag:toilets:disposal%3Dpitlatrine) [toilets:disposal=bucket](https://wiki.openstreetmap.org/wiki/Tag:toilets:disposal%3Dbucket) | +| [toilets:menstrual_products](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products) | Multiple choice | [toilets:menstrual_products=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dyes) [toilets:menstrual_products=limited](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dlimited) [toilets:menstrual_products=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products%3Dno) | +| [toilets:menstrual_products:location](https://wiki.openstreetmap.org/wiki/Key:toilets:menstrual_products:location) | [string](../SpecialInputElements.md#string) | [toilets:menstrual_products:location=female_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dfemale_toilet) [toilets:menstrual_products:location=male_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dmale_toilet) [toilets:menstrual_products:location=wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:toilets:menstrual_products:location%3Dwheelchair_toilet) | +| [changing_table](https://wiki.openstreetmap.org/wiki/Key:changing_table) | Multiple choice | [changing_table=yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dyes) [changing_table=no](https://wiki.openstreetmap.org/wiki/Tag:changing_table%3Dno) | +| [changing_table:location](https://wiki.openstreetmap.org/wiki/Key:changing_table:location) | [string](../SpecialInputElements.md#string) | [changing_table:location=female_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dfemale_toilet) [changing_table:location=male_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dmale_toilet) [changing_table:location=wheelchair_toilet](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Dwheelchair_toilet) [changing_table:location=dedicated_room](https://wiki.openstreetmap.org/wiki/Tag:changing_table:location%3Ddedicated_room) | +| [toilets:paper_supplied](https://wiki.openstreetmap.org/wiki/Key:toilets:paper_supplied) | Multiple choice | [toilets:paper_supplied=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dyes) [toilets:paper_supplied=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:paper_supplied%3Dno) | +| [toilets:handwashing](https://wiki.openstreetmap.org/wiki/Key:toilets:handwashing) | Multiple choice | [toilets:handwashing=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dyes) [toilets:handwashing=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:handwashing%3Dno) | +| [handwashing:soap](https://wiki.openstreetmap.org/wiki/Key:handwashing:soap) | Multiple choice | [handwashing:soap=yes](https://wiki.openstreetmap.org/wiki/Tag:handwashing:soap%3Dyes) [handwashing:soap=no](https://wiki.openstreetmap.org/wiki/Tag:handwashing:soap%3Dno) | +| [toilets:hands_drying](https://wiki.openstreetmap.org/wiki/Key:toilets:hands_drying) | Multiple choice | [toilets:hands_drying=electric_hand_dryer](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Delectric_hand_dryer) [toilets:hands_drying=paper_towel](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dpaper_towel) [toilets:hands_drying=towel_cabinet](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dtowel_cabinet) [toilets:hands_drying=towel](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dtowel) [toilets:hands_drying=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:hands_drying%3Dno) | +| [wheelchair](https://wiki.openstreetmap.org/wiki/Key:wheelchair) | Multiple choice | [wheelchair=designated](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Ddesignated) [wheelchair=no](https://wiki.openstreetmap.org/wiki/Tag:wheelchair%3Dno) | +| [toilets:wheelchair:grab_rail:left](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:left) | Multiple choice | [toilets:wheelchair:grab_rail:left=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dyes) [toilets:wheelchair:grab_rail:left=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dyes) [toilets:wheelchair:grab_rail:left=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dno) [toilets:wheelchair:grab_rail:left=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:left%3Dno) | +| [toilets:wheelchair:grab_rail:behind](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:behind) | Multiple choice | [toilets:wheelchair:grab_rail:behind=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:behind%3Dyes) [toilets:wheelchair:grab_rail:behind=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:behind%3Dno) | +| [toilets:wheelchair:grab_rail:foldable:left](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:foldable:left) | Multiple choice | [toilets:wheelchair:grab_rail:foldable:left=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:left%3Dyes) [toilets:wheelchair:grab_rail:foldable:left=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:left%3Dno) | +| [toilets:wheelchair:grab_rail:foldable:right](https://wiki.openstreetmap.org/wiki/Key:toilets:wheelchair:grab_rail:foldable:right) | Multiple choice | [toilets:wheelchair:grab_rail:foldable:right=yes](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:right%3Dyes) [toilets:wheelchair:grab_rail:foldable:right=no](https://wiki.openstreetmap.org/wiki/Tag:toilets:wheelchair:grab_rail:foldable:right%3Dno) | +| [door:width](https://wiki.openstreetmap.org/wiki/Key:door:width) | [pfloat](../SpecialInputElements.md#pfloat) | | +| [changing_table:adult](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult) | Multiple choice | [changing_table:adult=yes](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult%3Dyes) [changing_table:adult=no](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult%3Dno) | +| [changing_table:adult:height](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:height) | [pfloat](../SpecialInputElements.md#pfloat) | [changing_table:adult:height=adjustable](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:height%3Dadjustable) | +| [changing_table:adult:min_height](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:min_height) | [pfloat](../SpecialInputElements.md#pfloat) | | +| [changing_table:adult:max_height](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:max_height) | [pfloat](../SpecialInputElements.md#pfloat) | | +| [changing_table:adult:height:mechanism](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:height:mechanism) | Multiple choice | [changing_table:adult:height:mechanism=manual](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:height:mechanism%3Dmanual) [changing_table:adult:height:mechanism=electric](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:height:mechanism%3Delectric) | +| [changing_table:adult:support](https://wiki.openstreetmap.org/wiki/Key:changing_table:adult:support) | Multiple choice | [changing_table:adult:support=wall_mounted](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:support%3Dwall_mounted) [changing_table:adult:support=legs](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:support%3Dlegs) [changing_table:adult:support=wheels](https://wiki.openstreetmap.org/wiki/Tag:changing_table:adult:support%3Dwheels) | + +## Featureview elements and TagRenderings + +| id | question | labels | freeform key | +-----|-----|-----|----- | +| [images](#images)
_(Original in [questions](./BuiltinQuestions.md#images))_ | _{image_carousel()}{image_upload()}_ | | _Multiple choice only_ | +| [reviews](#reviews)
_(Original in [questions](./BuiltinQuestions.md#reviews))_ | _{create_review()}{list_reviews()}_ | | _Multiple choice only_ | +| [Name](#Name) | What is the name of this business?
_This business is named {name}_ | | *[name](https://wiki.osm.org/wiki/Key:name)* ([string](../SpecialInputElements.md#string)) | +| [Classification](#Classification) | What kind of cafe is this?
6 options | | _Multiple choice only_ | +| [opening_hours](#opening_hours)
_(Original in [questions](./BuiltinQuestions.md#opening_hours))_ | What are the opening hours of ?
_

Opening hours

{opening_hours_table(opening_hours)}_
1 options | | *[opening_hours](https://wiki.osm.org/wiki/Key:opening_hours)* ([opening_hours](../SpecialInputElements.md#opening_hours)) | +| [website](#website)
_(Original in [questions](./BuiltinQuestions.md#website))_ | What is the website of ?
_{website}_
1 options | contact | *[website](https://wiki.osm.org/wiki/Key:website)* ([url](../SpecialInputElements.md#url)) | +| [email](#email)
_(Original in [questions](./BuiltinQuestions.md#email))_ | What is the email address of ?
_{email}_
2 options | contact | *[email](https://wiki.osm.org/wiki/Key:email)* ([email](../SpecialInputElements.md#email)) | +| [phone](#phone)
_(Original in [questions](./BuiltinQuestions.md#phone))_ | What is the phone number of ?
_{link(&LBRACEphone&RBRACE,tel:&LBRACEphone&RBRACE,,,,)}_
1 options | contact | *[phone](https://wiki.osm.org/wiki/Key:phone)* ([phone](../SpecialInputElements.md#phone)) | +| [payment-options](#payment-options)
_(Original in [questions](./BuiltinQuestions.md#payment-options))_ | Which methods of payment are accepted here?
3 options | | _Multiple choice only_ | +| [repeated](#repeated)
_(Original in [questions](./BuiltinQuestions.md#repeated))_ | _Multiple, identical objects can be found on floors {repeat_on}._ | level | _Multiple choice only_ | +| [single_level](#single_level)
_(Original in [questions](./BuiltinQuestions.md#single_level))_ | On what level is this feature located?
_Located on the {level}th floor_
5 options | level | *[level](https://wiki.osm.org/wiki/Key:level)* ([float](../SpecialInputElements.md#float)) | +| [smoking](#smoking)
_(Original in [questions](./BuiltinQuestions.md#smoking))_ | Is smoking allowed at ?
3 options | | _Multiple choice only_ | +| [wheelchair-access](#wheelchair-access)
_(Original in [questions](./BuiltinQuestions.md#wheelchair-access))_ | Is this place accessible with a wheelchair?
4 options | | _Multiple choice only_ | +| [pub_reusable_packaging](#pub_reusable_packaging) | Does accept bring-your-own reusable cups?
3 options | | _Multiple choice only_ | +| [service:electricity](#service:electricity)
_(Original in [questions](./BuiltinQuestions.md#service:electricity))_ | Does this amenity have electrical outlets, available to customers when they are inside?
4 options | | _Multiple choice only_ | +| [seating](#seating)
_(Original in [questions](./BuiltinQuestions.md#seating))_ | What kind of seating does have?
2 options | | _Multiple choice only_ | +| [dog-access](#dog-access)
_(Original in [questions](./BuiltinQuestions.md#dog-access))_ | Are dogs allowed in this business?
5 options | | _Multiple choice only_ | +| [internet](#internet)
_(Original in [questions](./BuiltinQuestions.md#internet))_ | Does this place offer internet access?
6 options | internet-all | _Multiple choice only_ | +| [internet-fee](#internet-fee)
_(Original in [questions](./BuiltinQuestions.md#internet-fee))_ | Is there a fee for internet access?
3 options | internet-all | _Multiple choice only_ | +| [internet-ssid](#internet-ssid)
_(Original in [questions](./BuiltinQuestions.md#internet-ssid))_ | What is the network name for the wireless internet access?
_The network name is {internet_access:ssid}_
1 options | internet-all | *[internet_access:ssid](https://wiki.osm.org/wiki/Key:internet_access:ssid)* ([string](../SpecialInputElements.md#string)) | +| [toilets-group](#toilets-group)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-group))_ | _{group(grouptitle,toilet-questions,wheelchair;wheelchair-title;adult-changing-table)}_ | all | _Multiple choice only_ | +| [grouptitle](#grouptitle)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#grouptitle))_ | _Toilet information_
1 options | all, hidden | _Multiple choice only_ | +| [has_toilets](#has_toilets)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#has_toilets))_ | Has toilets?
3 options | toilet-questions, hidden, all | _Multiple choice only_ | +| [images_toilet](#images_toilet)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#images_toilet))_ | _{image_carousel(toilets:panoramax;toilets:mapillary;toilets:images)}{image_upload(toilets:panoramax,Add a picture of the toilets,)}_ | relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_repeated](#toilets_repeated)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_repeated))_ | _Multiple, identical objects can be found on floors {toilets:repeat_on}._ | level, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_single_level](#toilets_single_level)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_single_level))_ | On what level is this feature located?
_Located on the {toilets:level}th floor_
5 options | level, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | *[toilets:level](https://wiki.osm.org/wiki/Key:toilets:level)* ([float](../SpecialInputElements.md#float)) | +| [toilets_toilet-access](#toilets_toilet-access)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilet-access))_ | Are these toilets publicly accessible?
_Access is {toilets:access}_
4 options | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | *[toilets:access](https://wiki.osm.org/wiki/Key:toilets:access)* ([string](../SpecialInputElements.md#string)) | +| [toilets_toilets-fee](#toilets_toilets-fee)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilets-fee))_ | Are these toilets free to use?
2 options | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_toilet-charge](#toilets_toilet-charge)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilet-charge))_ | How much does one have to pay for these toilets?
_The fee is {toilets:charge}_ | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | *[toilets:charge](https://wiki.osm.org/wiki/Key:toilets:charge)* ([string](../SpecialInputElements.md#string)) | +| [toilets_payment-options-split](#toilets_payment-options-split)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_payment-options-split))_ | Which methods of payment are accepted here?
7 options | relevant-questions, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_gender_segregated](#toilets_gender_segregated)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_gender_segregated))_ | Are these toilets gender-segregated?
2 options | relevant-questions, no-prefix, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_toilet-supervised](#toilets_toilet-supervised)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilet-supervised))_ | Is this toilets supervised by a person?
3 options | relevant-questions, no-prefix, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_description](#toilets_description)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_description))_ | Is there still some relevant info that the previous questions did not cover? Feel free to add it here.
_{toilets:description}_ | amenity-no-prefix, no-prefix, relevant-questions, relevant_questions, toilet-questions, hidden, all | *[toilets:description](https://wiki.osm.org/wiki/Key:toilets:description)* ([text](../SpecialInputElements.md#text)) | +| [toilets_toilets-wheelchair](#toilets_toilets-wheelchair)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_toilets-wheelchair))_ | Is there a dedicated toilet for wheelchair users?
3 options | relevant-questions, wheelchair, hidden, no-prefix, amenity-no-prefix, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets-type](#toilets-type)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-type))_ | Which kind of toilets are these?
4 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets-disposal](#toilets-disposal)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-disposal))_ | How is the waste handled?
3 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [menstrual_products](#menstrual_products)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#menstrual_products))_ | Are free, menstrual products distributed here?
3 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [menstrual_products_location](#menstrual_products_location)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#menstrual_products_location))_ | Where are the free menstrual products located?
_The menstrual products are located in {toilets:menstrual_products:location}_
3 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[toilets:menstrual_products:location](https://wiki.osm.org/wiki/Key:toilets:menstrual_products:location)* ([string](../SpecialInputElements.md#string)) | +| [toilets-changing-table](#toilets-changing-table)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets-changing-table))_ | Is a changing table (to change diapers) available?
2 options | relevant-questions, no-prefix, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-changing_table:location](#toilet-changing_table:location)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-changing_table:location))_ | Where is the changing table located?
_A changing table is located at {changing_table:location}_
4 options | relevant-questions, no-prefix, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:location](https://wiki.osm.org/wiki/Key:changing_table:location)* ([string](../SpecialInputElements.md#string)) | +| [toilet-has-paper](#toilet-has-paper)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-has-paper))_ | Does one have to bring their own toilet paper to this toilet?
2 options | relevant-questions, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-handwashing](#toilet-handwashing)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-handwashing))_ | Do these toilets have a sink to wash your hands?
2 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [handwashing-soap](#handwashing-soap)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#handwashing-soap))_ | Is soap for handwashing provided?
2 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-drying](#toilet-drying)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-drying))_ | Do these toilets have a device to dry your hands?
5 options | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-group](#wheelchair-group)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-group))_ | _{group(wheelchair-title,wheelchair;adult-changing-table,)}_ | relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-picture-carousel](#wheelchair-picture-carousel)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-picture-carousel))_ | _{image_carousel(toilets:wheelchair:panoramax;toilets:wheelchair:image;toilets:wheelchair:mapillary)}_ | wheelchair, hidden, relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-picture](#wheelchair-picture)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-picture))_ | _{image_upload(toilets:wheelchair:panoramax,Add a picture of the wheelchair accessible toilet,)}_ | wheelchair, hidden, relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-title](#wheelchair-title)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-title))_ | _Wheelchair accessible toilet_
2 options | hidden, relevant-questions, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-wheelchair-access](#toilet-wheelchair-access)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-wheelchair-access))_ | Is the wheelchair-accessible toilet locked?
5 options | hidden, wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_has_grab_rail_lr](#toilets_wheelchair_has_grab_rail_lr)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_has_grab_rail_lr))_ | Is there a grab rail?
4 options | wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_has_grab_rail_behind](#toilets_wheelchair_has_grab_rail_behind)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_has_grab_rail_behind))_ | Does the toilet have a grab rail behind the toilet?
2 options | wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_is_foldable_left](#toilets_wheelchair_is_foldable_left)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_is_foldable_left))_ | Is the left grab rail foldable?
2 options | generic_questions, wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilets_wheelchair_is_foldable_right](#toilets_wheelchair_is_foldable_right)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilets_wheelchair_is_foldable_right))_ | Is the right grab rail foldable?
2 options | generic_questions, wheelchair, relevant-questions, prefixed, amenity-prefixed, hidden, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [wheelchair-door-width](#wheelchair-door-width)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#wheelchair-door-width))_ | What is the width of the door to the wheelchair accessible toilet?
_The door to the wheelchair-accessible toilet is {canonical(door:width)} wide_ | relevant-questions, wheelchair, hidden, prefixed, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[door:width](https://wiki.osm.org/wiki/Key:door:width)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [questions-wheelchair](#questions-wheelchair)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#questions-wheelchair))_ | _{questions(wheelchair,,)}_ | wheelchair, hidden, relevant-questions, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [adult_changing_table_title](#adult_changing_table_title)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#adult_changing_table_title))_ | _Adult changing table_ | hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [adult-changing-table](#adult-changing-table)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#adult-changing-table))_ | Does this toilet have an adult changing table?
2 options | prefixed, hidden, relevant-questions, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [changing_table_adult_height](#changing_table_adult_height)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_height))_ | What is the height of the adult changing table?
_The changing table is {canonical(changing_table:adult:height)} high_
1 options | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:adult:height](https://wiki.osm.org/wiki/Key:changing_table:adult:height)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [changing_table_adult_adult-changing-table-min_height](#changing_table_adult_adult-changing-table-min_height)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-min_height))_ | What is the lowest height the adult changing table can be moved to?
_The lowest height of the adult changing table is {canonical(changing_table:adult:min_height)}_ | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:adult:min_height](https://wiki.osm.org/wiki/Key:changing_table:adult:min_height)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [changing_table_adult_adult-changing-table-max_height](#changing_table_adult_adult-changing-table-max_height)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-max_height))_ | What is the highest height the adult changing table can be moved to?
_The highest height of the adult changing table is {canonical(changing_table:adult:max_height)}_ | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | *[changing_table:adult:max_height](https://wiki.osm.org/wiki/Key:changing_table:adult:max_height)* ([pfloat](../SpecialInputElements.md#pfloat)) | +| [changing_table_adult_adult-changing-table-mechanism](#changing_table_adult_adult-changing-table-mechanism)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-mechanism))_ | How is the height of the changing table adjusted?
2 options | relevant_questions, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [changing_table_adult_adult-changing-table-support](#changing_table_adult_adult-changing-table-support)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#changing_table_adult_adult-changing-table-support))_ | How is the adult changing table supported?
3 options | relevant_questions, hidden, prefixed, adult-changing-table, hidden, prefixed, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [questions-adult-changing-table](#questions-adult-changing-table)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#questions-adult-changing-table))_ | _{questions(adult-changing-table,,yes)}_ | hidden, relevant-questions, adult-changing-table, amenity-prefixed, relevant_questions, toilet-questions, hidden, all | _Multiple choice only_ | +| [toilet-question-box](#toilet-question-box)
_(Original in [toilet_at_amenity_lib](./toilet_at_amenity_lib.md#toilet-question-box))_ | _{questions(toilet-questions,wheelchair;adult-changing-table,)}_ | toilet-questions, all, hidden | _Multiple choice only_ | +| [leftover-questions](#leftover-questions) | _{questions( ,hidden;wheelchair;adult-changing-table;toilet-questions)}_ | ignore-docs, added_by_default | _Multiple choice only_ | +| [move-button](#move-button) | _{move_button()}_ | | _Multiple choice only_ | +| [delete-button](#delete-button) | _{delete_button()}_ | | _Multiple choice only_ | +| [lod](#lod)
_(Original in [questions](./BuiltinQuestions.md#lod))_ | _{linked_data_from_website()}_ | added_by_default | _Multiple choice only_ | +| [spacer](#spacer) | _
_ | | _Multiple choice only_ | + +### images +This block shows the known images which are linked with the `image`-keys, but also via `mapillary` and `wikidata` and shows the button to upload new images +_This tagrendering has no question and is thus read-only_ + +*{image_carousel()}{image_upload()}* + +### reviews +Shows the reviews module (including the possibility to leave a review) +_This tagrendering has no question and is thus read-only_ + +*{create_review()}{list_reviews()}* + +### Name +The question is `What is the name of this business?` + +*This business is named {name}* is shown if `name` is set. + +### Classification +The question is `What kind of cafe is this?` + + - *A pub, mostly for drinking beers in a warm, relaxed interior* is shown if with amenity=pub + - *A more modern and commercial bar, possibly with a music and light installation* is shown if with amenity=bar + - *A cafe to drink tea, coffee or an alcoholical bevarage in a quiet environment* is shown if with amenity=cafe + - *A restaurant where one can get a proper meal* is shown if with amenity=restaurant + - *An open space where beer is served, typically seen in Germany* is shown if with amenity=biergarten + - *This is a nightclub or disco with a focus on dancing, music by a DJ with accompanying light show and a bar to get (alcoholic) drinks* is shown if with amenity=nightclub + +### opening_hours +The question is `What are the opening hours of {title()}?` + +*

Opening hours

{opening_hours_table(opening_hours)}* is shown if `opening_hours` is set. + + - *Marked as closed for an unspecified time* is shown if with opening_hours=closed. _This option cannot be chosen as answer_ + +### website +The question is `What is the website of {title()}?` + +*{website}* is shown if `website` is set. + + - *{contact:website}* is shown if with contact:website~.+. _This option cannot be chosen as answer_ + +This tagrendering has labels `contact` + +### email +The question is `What is the email address of {title()}?` + +*{email}* is shown if `email` is set. + + - *{contact:email}* is shown if with contact:email~.+. _This option cannot be chosen as answer_ + - *{operator:email}* is shown if with operator:email~.+. _This option cannot be chosen as answer_ + +This tagrendering has labels `contact` + +### phone +The question is `What is the phone number of {title()}?` + +*{link(&LBRACEphone&RBRACE,tel:&LBRACEphone&RBRACE,,,,)}* is shown if `phone` is set. + + - *{link(&LBRACEcontact:phone&RBRACE,tel:&LBRACEcontact:phone&RBRACE,,,,)}* is shown if with contact:phone~.+. _This option cannot be chosen as answer_ + +This tagrendering has labels `contact` + +### payment-options +The question is `Which methods of payment are accepted here?` + + - *Cash is accepted here* is shown if with payment:cash=yes. Unselecting this answer will add payment:cash=no + - *Payment cards are accepted here* is shown if with payment:cards=yes. Unselecting this answer will add payment:cards=no + - *Payment by QR-code is possible here* is shown if with payment:qr_code=yes. Unselecting this answer will add payment:qr_code=no + +### repeated +_This tagrendering has no question and is thus read-only_ + +*Multiple, identical objects can be found on floors {repeat_on}.* + +This tagrendering is only visible in the popup if the following condition is met: repeat_on~.+ +This tagrendering has labels `level` + +### single_level +The question is `On what level is this feature located?` + +*Located on the {level}th floor* is shown if `level` is set. + + - *Located underground* is shown if with location=underground. _This option cannot be chosen as answer_ + - *Located on the ground floor* is shown if with level=0 + - *Located on the ground floor* is shown if with level=. _This option cannot be chosen as answer_ + - *Located on the first floor* is shown if with level=1 + - *Located on the first basement level* is shown if with level=-1 + +This tagrendering has labels `level` + +### smoking +The question is `Is smoking allowed at {title()}?` + + - *Smoking is allowed* is shown if with smoking=yes + - *Smoking is not allowed* is shown if with smoking=no + - *Smoking is allowed outside.* is shown if with smoking=outside + +### wheelchair-access +The question is `Is this place accessible with a wheelchair?` + + - *This place is specially adapted for wheelchair users* is shown if with wheelchair=designated + - *This place is easily reachable with a wheelchair* is shown if with wheelchair=yes + - *It is possible to reach this place in a wheelchair, but it is not easy* is shown if with wheelchair=limited + - *This place is not reachable with a wheelchair* is shown if with wheelchair=no + +### pub_reusable_packaging +The question is `Does {title()} accept bring-your-own reusable cups?` + + - *Accepts reusable cups* is shown if with reusable_packaging:accept=yes + - *Does not accept reusable cups* is shown if with reusable_packaging:accept=no + - *Only serves to people who bring reusable cups* is shown if with reusable_packaging:accept=only + +### service:electricity +The question is `Does this amenity have electrical outlets, available to customers when they are inside?` + + - *There are plenty of domestic sockets available to customers seated indoors, where they can charge their electronics* is shown if with service:electricity=yes + - *There are a few domestic sockets available to customers seated indoors, where they can charge their electronics* is shown if with service:electricity=limited + - *There are no sockets available indoors to customers, but charging might be possible if the staff is asked* is shown if with service:electricity=ask + - *There are a no domestic sockets available to customers seated indoors* is shown if with service:electricity=no + +### seating +The question is `What kind of seating does {title()} have?` + + - *This place has outdoor seating* is shown if with outdoor_seating=yes. Unselecting this answer will add outdoor_seating=no + - *This place has indoor seating* is shown if with indoor_seating=yes. Unselecting this answer will add indoor_seating=no + +### dog-access +The question is `Are dogs allowed in this business?` + + - *Dogs are allowed* is shown if with dog=yes + - *Dogs are not allowed* is shown if with dog=no + - *Dogs are allowed, but they have to be leashed* is shown if with dog=leashed + - *Dogs are allowed and can run around freely* is shown if with dog=unleashed + - *Dogs are allowed only outside* is shown if with dog=outside + +### internet +The question is `Does this place offer internet access?` + + - *This place offers wireless internet access* is shown if with internet_access=wlan + - *This place does not offer internet access* is shown if with internet_access=no + - *This place offers internet access* is shown if with internet_access=yes. _This option cannot be chosen as answer_ + - *This place offers internet access via a terminal or computer* is shown if with internet_access=terminal + - *This place offers wired internet access* is shown if with internet_access=wired + - *This place offers both wireless internet and internet access via a terminal or computer* is shown if with internet_access=terminal;wlan + +This tagrendering has labels `internet-all` + +### internet-fee +The question is `Is there a fee for internet access?` + + - *There is a fee for the internet access at this place* is shown if with internet_access:fee=yes + - *Internet access is free at this place* is shown if with internet_access:fee=no + - *Internet access is free at this place, for customers only* is shown if with internet_access:fee=customers + +This tagrendering is only visible in the popup if the following condition is met: internet_access!=no & internet_access~.+ +This tagrendering has labels `internet-all` + +### internet-ssid +The question is `What is the network name for the wireless internet access?` + +*The network name is {internet_access:ssid}* is shown if `internet_access:ssid` is set. + + - *Telekom* is shown if with internet_access:ssid=Telekom + +This tagrendering is only visible in the popup if the following condition is met: internet_access~^(.*wlan.*)$ +This tagrendering has labels `internet-all` + +### toilets-group +_This tagrendering has no question and is thus read-only_ + +*{group(grouptitle,toilet-questions,wheelchair;wheelchair-title;adult-changing-table)}* + +This tagrendering has labels `all` + +### grouptitle +_This tagrendering has no question and is thus read-only_ + +*Toilet information* + + - *Does not have toilets* is shown if with toilets=no + +This tagrendering has labels `all` `hidden` + +### has_toilets +The question is `Has {title()} toilets?` + + - *Has toilets* is shown if with toilets=yes + - *Has no toilets* is shown if with toilets=no + - *The toilets are marked separately on the map* is shown if with toilets=separate + +This tagrendering has labels `toilet-questions` `hidden` `all` + +### images_toilet +_This tagrendering has no question and is thus read-only_ + +*{image_carousel(toilets:panoramax;toilets:mapillary;toilets:images)}{image_upload(toilets:panoramax,Add a picture of the toilets,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_repeated +_This tagrendering has no question and is thus read-only_ + +*Multiple, identical objects can be found on floors {toilets:repeat_on}.* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:repeat_on~.+ +This tagrendering has labels `level` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_single_level +The question is `On what level is this feature located?` + +*Located on the {toilets:level}th floor* is shown if `toilets:level` is set. + + - *Located underground* is shown if with toilets:location=underground. _This option cannot be chosen as answer_ + - *Located on the ground floor* is shown if with toilets:level=0 + - *Located on the ground floor* is shown if with toilets:level=. _This option cannot be chosen as answer_ + - *Located on the first floor* is shown if with toilets:level=1 + - *Located on the first basement level* is shown if with toilets:level=-1 + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:repeat_on= +This tagrendering has labels `level` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilet-access +The question is `Are these toilets publicly accessible?` + +*Access is {toilets:access}* is shown if `toilets:access` is set. + + - *Public access* is shown if with toilets:access=yes + - *Only access to customers* is shown if with toilets:access=customers + - *Not accessible* is shown if with toilets:access=no + - *Accessible, but one has to ask a key to enter* is shown if with toilets:access=key + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilets-fee +The question is `Are these toilets free to use?` + + - *These are paid toilets* is shown if with toilets:fee=yes + - *Free to use* is shown if with toilets:fee=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:access!=no +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilet-charge +The question is `How much does one have to pay for these toilets?` + +*The fee is {toilets:charge}* is shown if `toilets:charge` is set. + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:fee=yes +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_payment-options-split +The question is `Which methods of payment are accepted here?` + + - *Cash is accepted here* is shown if with toilets:payment:cash=yes. _This option cannot be chosen as answer_. Unselecting this answer will add toilets:payment:cash= + - *Payment cards are accepted here* is shown if with toilets:payment:cards=yes. _This option cannot be chosen as answer_. Unselecting this answer will add toilets:payment:cards= + - *Payment by QR-code is possible here* is shown if with toilets:payment:qr_code=yes. Unselecting this answer will add toilets:payment:qr_code=no + - *Coins are accepted here* is shown if with toilets:payment:coins=yes. Unselecting this answer will add toilets:payment:coins=no + - *Bank notes are accepted here* is shown if with toilets:payment:notes=yes. Unselecting this answer will add toilets:payment:notes=no + - *Debit cards are accepted here* is shown if with toilets:payment:debit_cards=yes. Unselecting this answer will add toilets:payment:debit_cards=no + - *Credit cards are accepted here* is shown if with toilets:payment:credit_cards=yes. Unselecting this answer will add toilets:payment:credit_cards=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:fee=yes +This tagrendering has labels `relevant-questions` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_gender_segregated +The question is `Are these toilets gender-segregated?` + + - *There is a separate, signposted area for men and women* is shown if with toilets:gender_segregated=yes + - *There is no separate, signposted area for men and women* is shown if with toilets:gender_segregated=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:toilets:position!=urinal +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilet-supervised +The question is `Is this toilets supervised by a person?` + + - *There is a person supervising these toilets during (most of) the opening hours* is shown if with toilets:supervised=yes + - *There is a person supervising these toilets, but they are present only during certain times of the opening hours* is shown if with toilets:supervised=interval + - *These toilets are not supervised* is shown if with toilets:supervised=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:access=yes | toilets:access=) +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_description +The question is `Is there still some relevant info that the previous questions did not cover? Feel free to add it here.` + +*{toilets:description}* is shown if `toilets:description` is set. + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `amenity-no-prefix` `no-prefix` `relevant-questions` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_toilets-wheelchair +The question is `Is there a dedicated toilet for wheelchair users?` + + - *There is a dedicated toilet for wheelchair users* is shown if with toilets:wheelchair=yes + - *No wheelchair access* is shown if with toilets:wheelchair=no + - *There is only a dedicated toilet for wheelchair users* is shown if with toilets:wheelchair=designated + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `wheelchair` `hidden` `no-prefix` `amenity-no-prefix` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets-type +The question is `Which kind of toilets are these?` + + - *There are only seated toilets* is shown if with toilets:position=seated + - *There are only urinals here* is shown if with toilets:position=urinal + - *There are only squat toilets here* is shown if with toilets:position=squat + - *Both seated toilets and urinals are available here* is shown if with toilets:position=seated;urinal + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets-disposal +The question is `How is the waste handled?` + + - *The waste is moved away by flushing the toilet with water* is shown if with toilets:disposal=flush + - *The waste falls into a pit* is shown if with toilets:disposal=pitlatrine + - *The waste is collected in a bucket or similar container, which is regularly removed* is shown if with toilets:disposal=bucket + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### menstrual_products +The question is `Are free, menstrual products distributed here?` + + - *Free menstrual products are available to all visitors of these toilets* is shown if with toilets:menstrual_products=yes + - *Free menstrual products are available to some visitors of these toilets* is shown if with toilets:menstrual_products=limited + - *No free menstrual products are available here* is shown if with toilets:menstrual_products=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### menstrual_products_location +The question is `Where are the free menstrual products located?` + +*The menstrual products are located in {toilets:menstrual_products:location}* is shown if `toilets:menstrual_products:location` is set. + + - *The free, menstrual products are located in the toilet for women* is shown if with toilets:menstrual_products:location=female_toilet + - *The free, menstrual products are located in the toilet for men* is shown if with toilets:menstrual_products:location=male_toilet + - *The free, menstrual products are located in the toilet for wheelchair users* is shown if with toilets:menstrual_products:location=wheelchair_toilet + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:menstrual_products=limited | toilets:menstrual_products:location~.+) +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets-changing-table +The question is `Is a changing table (to change diapers) available?` + + - *A changing table is available* is shown if with changing_table=yes + - *No changing table is available* is shown if with changing_table=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-changing_table:location +The question is `Where is the changing table located?` + +*A changing table is located at {changing_table:location}* is shown if `changing_table:location` is set. + + - *A changing table is in the toilet for women* is shown if with changing_table:location=female_toilet + - *A changing table is in the toilet for men* is shown if with changing_table:location=male_toilet + - *A changing table is in the toilet for wheelchair users* is shown if with changing_table:location=wheelchair_toilet + - *A changing table is in a dedicated room* is shown if with changing_table:location=dedicated_room + +This tagrendering is only visible in the popup if the following condition is met: changing_table=yes & toilets=yes +This tagrendering has labels `relevant-questions` `no-prefix` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-has-paper +The question is `Does one have to bring their own toilet paper to this toilet?` + + - *This toilet is equipped with toilet paper* is shown if with toilets:paper_supplied=yes + - *You have to bring your own toilet paper to this toilet* is shown if with toilets:paper_supplied=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:position!=urinal +This tagrendering has labels `relevant-questions` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-handwashing +The question is `Do these toilets have a sink to wash your hands?` + + - *These toilets have a sink to wash your hands* is shown if with toilets:handwashing=yes + - *These toilets don't have a sink to wash your hands* is shown if with toilets:handwashing=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### handwashing-soap +The question is `Is soap for handwashing provided?` + + - *Soap for handwashing is provided* is shown if with handwashing:soap=yes + - *No soap for handwashing* is shown if with handwashing:soap=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:handwashing=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-drying +The question is `Do these toilets have a device to dry your hands?` + + - *Electric hand dryers are available for drying hands.* is shown if with toilets:hands_drying=electric_hand_dryer + - *Paper towels are available for drying hands.* is shown if with toilets:hands_drying=paper_towel + - *A towel roll cabinet is available for drying hands* is shown if with toilets:hands_drying=towel_cabinet + - *A fabric towel available to dry your hands.* is shown if with toilets:hands_drying=towel + - *There are no hand drying facilities available.* is shown if with toilets:hands_drying=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:handwashing=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-group +_This tagrendering has no question and is thus read-only_ + +*{group(wheelchair-title,wheelchair;adult-changing-table,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-picture-carousel +_This tagrendering has no question and is thus read-only_ + +*{image_carousel(toilets:wheelchair:panoramax;toilets:wheelchair:image;toilets:wheelchair:mapillary)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `hidden` `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-picture +_This tagrendering has no question and is thus read-only_ + +*{image_upload(toilets:wheelchair:panoramax,Add a picture of the wheelchair accessible toilet,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `hidden` `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-title +_This tagrendering has no question and is thus read-only_ + +*Wheelchair accessible toilet* + + - *Wheelchair accessibility features* is shown if with wheelchair=designated | toilets:wheelchair=designated + - *No wheelchair accessible toilet* is shown if with wheelchair=no | toilets:wheelchair=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `hidden` `relevant-questions` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-wheelchair-access +The question is `Is the wheelchair-accessible toilet locked?` + + - *The wheelchair accessible toilets are freely accessible* is shown if with toilets:wheelchair:access=yes + - *One needs to ask permission to access wheelchair-accessible toilet, e.g. by asking a key* is shown if with toilets:wheelchair:access=key + - *One can use a Master Locksmiths Access Key (MLAK) to access this bathroom* is shown if with centralkey=mlak + - *One can use a RADAR Key to access this bathroom* is shown if with centralkey=nks + - *One can use a EuroKey to access this bathroom* is shown if with centralkey=eurokey + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) & (access=yes | access=public | access=customers | access=) +This tagrendering has labels `hidden` `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_has_grab_rail_lr +The question is `Is there a grab rail?` + + - *Grab rails on both sides* is shown if with toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=yes + - *Only grab rails on the left side* is shown if with toilets:wheelchair:grab_rail:left=yes & toilets:wheelchair:grab_rail:right=no + - *Grab rails on the right side* is shown if with toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=yes + - *No grab rails at all* is shown if with toilets:wheelchair:grab_rail:left=no & toilets:wheelchair:grab_rail:right=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_has_grab_rail_behind +The question is `Does the toilet have a grab rail behind the toilet?` + + - *Has a grab rail behind the toilet* is shown if with toilets:wheelchair:grab_rail:behind=yes + - *No grab rail behind the toilet* is shown if with toilets:wheelchair:grab_rail:behind=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_is_foldable_left +The question is `Is the left grab rail foldable?` + + - *The left grab rail is foldable* is shown if with toilets:wheelchair:grab_rail:foldable:left=yes + - *The left grab rail is not foldable* is shown if with toilets:wheelchair:grab_rail:foldable:left=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:wheelchair:grab_rail:left=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `generic_questions` `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilets_wheelchair_is_foldable_right +The question is `Is the right grab rail foldable?` + + - *The right grab rail is foldable* is shown if with toilets:wheelchair:grab_rail:foldable:right=yes + - *The right grab rail is not foldable* is shown if with toilets:wheelchair:grab_rail:foldable:right=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & toilets:wheelchair:grab_rail:right=yes & (toilets:wheelchair=yes | (amenity=toilets & wheelchair=yes)) +This tagrendering has labels `generic_questions` `wheelchair` `relevant-questions` `prefixed` `amenity-prefixed` `hidden` `relevant_questions` `toilet-questions` `hidden` `all` + +### wheelchair-door-width +The question is `What is the width of the door to the wheelchair accessible toilet?` + +*The door to the wheelchair-accessible toilet is {canonical(door:width)} wide* is shown if `door:width` is set. + +The allowed input is of type pfloat and is in range 0.4 until 4 (both inclusive). A warning will appear if the value is outside of 0.6 and 2. + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes & (toilets:wheelchair=designated | (amenity=toilet & wheelchair~^(yes|designated)$)) +This tagrendering has labels `relevant-questions` `wheelchair` `hidden` `prefixed` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### questions-wheelchair +_This tagrendering has no question and is thus read-only_ + +*{questions(wheelchair,,)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `wheelchair` `hidden` `relevant-questions` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### adult_changing_table_title +_This tagrendering has no question and is thus read-only_ + +*Adult changing table* + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & toilets=yes +This tagrendering has labels `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### adult-changing-table +The question is `Does this toilet have an adult changing table?` + + - *Has a changing table for adults* is shown if with changing_table:adult=yes + - *No changing table for adults* is shown if with changing_table:adult=no + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `prefixed` `hidden` `relevant-questions` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_height +The question is `What is the height of the adult changing table?` + +*The changing table is {canonical(changing_table:adult:height)} high* is shown if `changing_table:adult:height` is set. + +The allowed input is of type pfloat and is in range 0.4 until 2 (both inclusive). A warning will appear if the value is outside of 0.8 and 1.7. + + - *The changing table is adjustable in height* is shown if with changing_table:adult:height=adjustable + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-min_height +The question is `What is the lowest height the adult changing table can be moved to?` + +*The lowest height of the adult changing table is {canonical(changing_table:adult:min_height)}* is shown if `changing_table:adult:min_height` is set. + +The allowed input is of type pfloat and is in range 0.4 until 2 (both inclusive). A warning will appear if the value is outside of 0.8 and 1.7. + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & changing_table:adult:height=adjustable & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-max_height +The question is `What is the highest height the adult changing table can be moved to?` + +*The highest height of the adult changing table is {canonical(changing_table:adult:max_height)}* is shown if `changing_table:adult:max_height` is set. + +The allowed input is of type pfloat and is in range 0.4 until 2 (both inclusive). A warning will appear if the value is outside of 0.8 and 1.7. + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & changing_table:adult:height=adjustable & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-mechanism +The question is `How is the height of the changing table adjusted?` + + - *The height of the adult changing table is adjusted manually* is shown if with changing_table:adult:height:mechanism=manual + - *The height of the adult changing table is adjusted electrically* is shown if with changing_table:adult:height:mechanism=electric + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & changing_table:adult:height=adjustable & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### changing_table_adult_adult-changing-table-support +The question is `How is the adult changing table supported?` + + - *The changing table is mounted to the wall* is shown if with changing_table:adult:support=wall_mounted + - *The changing table stands on table legs* is shown if with changing_table:adult:support=legs + - *The changing table stands on table legs with wheels and can be moved* is shown if with changing_table:adult:support=wheels + +This tagrendering is only visible in the popup if the following condition is met: changing_table:adult=yes & toilets=yes +This tagrendering has labels `relevant_questions` `hidden` `prefixed` `adult-changing-table` `hidden` `prefixed` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### questions-adult-changing-table +_This tagrendering has no question and is thus read-only_ + +*{questions(adult-changing-table,,yes)}* + +This tagrendering is only visible in the popup if the following condition is met: toilets=yes +This tagrendering has labels `hidden` `relevant-questions` `adult-changing-table` `amenity-prefixed` `relevant_questions` `toilet-questions` `hidden` `all` + +### toilet-question-box +_This tagrendering has no question and is thus read-only_ + +*{questions(toilet-questions,wheelchair;adult-changing-table,)}* + +This tagrendering has labels `toilet-questions` `all` `hidden` + +### leftover-questions +_This tagrendering has no question and is thus read-only_ + +*{questions( ,hidden;wheelchair;adult-changing-table;toilet-questions)}* + +This tagrendering has labels `ignore-docs` `added_by_default` + +### move-button +_This tagrendering has no question and is thus read-only_ + +*{move_button()}* + +### delete-button +_This tagrendering has no question and is thus read-only_ + +*{delete_button()}* + +### lod +_This tagrendering has no question and is thus read-only_ + +*{linked_data_from_website()}* + +This tagrendering has labels `added_by_default` + +### spacer +_This tagrendering has no question and is thus read-only_ + +*
* + +## Filters + +| id | question | osmTags | +-----|-----|----- | +| open_now.0 | Now open | _isOpen=yes | + +| id | question | osmTags | +-----|-----|----- | +| accepts_cash.0 | Accepts cash | payment:cash=yes | + +| id | question | osmTags | +-----|-----|----- | +| accepts_cards.0 | Accepts payment cards | payment:cards=yes | + +| id | question | osmTags | +-----|-----|----- | +| has_internet.0 | Offers internet | internet_access=wlan | internet_access=yes | internet_access=wired | + +| id | question | osmTags | +-----|-----|----- | +| has_electricity.0 | Offers electricity | service:electricity=yes | + +| id | question | osmTags | +-----|-----|----- | +| outdoor_seating.0 | Has outdoor seating | outdoor_seating=yes | + +| id | question | osmTags | +-----|-----|----- | +| indoor_seating.0 | Has indoor seating | indoor_seating=yes | + +| id | question | osmTags | +-----|-----|----- | +| dogs.0 | *No preference towards dogs* (default) | | +| dogs.1 | Dogs allowed | dog=unleashed | dog=yes | +| dogs.2 | No dogs allowed | dog=no | + # pet_shops This layer is based on [shops](../Layers/shops.md) diff --git a/Docs/Themes/police_call_boxes.md b/Docs/Themes/police_call_boxes.md index 7bf7aa48d..b4c949a14 100644 --- a/Docs/Themes/police_call_boxes.md +++ b/Docs/Themes/police_call_boxes.md @@ -14,6 +14,7 @@ Available languages: - en - cs + - zh_Hant # Layers defined in this theme configuration file These layers can not be reused in different themes. diff --git a/Docs/Themes/width.md b/Docs/Themes/width.md index f9a5bafc8..f2cef1c11 100644 --- a/Docs/Themes/width.md +++ b/Docs/Themes/width.md @@ -9,6 +9,7 @@ The theme introduction reads: This theme contains the following layers: - [street_with_width (defined in this theme)](#street_with_width) + - [street_no_width (defined in this theme)](#street_no_width) Available languages: @@ -30,7 +31,17 @@ Available languages: + [needed_for_pedestrians](#needed_for_pedestrians) + [total_width_needed](#total_width_needed) + [has_sidewalks](#has_sidewalks) + + [questions](#questions) + + [nearbyimagesclosedreadonly](#nearbyimagesclosedreadonly) + + [lod](#lod) + + [spacer](#spacer) +3. [street_no_width](#street_no_width) + - [Basic tags for this layer](#basic-tags-for-this-layer) + - [Supported attributes](#supported-attributes) + - [Featureview elements and TagRenderings](#featureview-elements-and-tagrenderings) + + [carriageway_width](#carriageway_width) + [leftover-questions](#leftover-questions) + + [split_button](#split_button) + [lod](#lod) + [spacer](#spacer) @@ -74,7 +85,8 @@ Elements must match the expression **width:carriageway~.+** | [needed_for_pedestrians](#needed_for_pedestrians) | _{_width:needed:pedestrians}m voor voetgangers_
2 options | | _Multiple choice only_ | | [total_width_needed](#total_width_needed) | _{_width:needed:total}m nodig in het totaal_ | | _Multiple choice only_ | | [has_sidewalks](#has_sidewalks) | Heeft deze straat voetpaden?
4 options | | _Multiple choice only_ | -| [leftover-questions](#leftover-questions) | _{questions( ,hidden)}_ | ignore-docs, added_by_default | _Multiple choice only_ | +| [questions](#questions)
_(Original in [questions](./BuiltinQuestions.md#questions))_ | _{questions()}_ | | _Multiple choice only_ | +| [nearbyimagesclosedreadonly](#nearbyimagesclosedreadonly) | _{nearby_images(closed,readonly)}_ | | _Multiple choice only_ | | [lod](#lod)
_(Original in [questions](./BuiltinQuestions.md#lod))_ | _{linked_data_from_website()}_ | added_by_default | _Multiple choice only_ | | [spacer](#spacer) | _
_ | | _Multiple choice only_ | @@ -132,7 +144,69 @@ The question is `Heeft deze straat voetpaden?` - *Voetpad aan de linkerkant* is shown if with sidewalk=left - *Voetpad aan de rechterzijde* is shown if with sidewalk=right -This tagrendering is only visible in the popup if the following condition is met: id=disabled +### questions +Show the questions block at this location +_This tagrendering has no question and is thus read-only_ + +*{questions()}* + +### nearbyimagesclosedreadonly +_This tagrendering has no question and is thus read-only_ + +*{nearby_images(closed,readonly)}* + +### lod +_This tagrendering has no question and is thus read-only_ + +*{linked_data_from_website()}* + +This tagrendering has labels `added_by_default` + +### spacer +_This tagrendering has no question and is thus read-only_ + +*
* + +# street_no_width + +Typical city streets with width + + - This layer is shown at zoomlevel **19** and higher + - Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings` + +No themes use this layer + +## Basic tags for this layer + +Elements must match **all** of the following expressions: + +0. width:carriageway= +1. highway=residential | highway=unclassified | highway=tertiary | highway=living_street + +[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B%28%20%20%20%20nwr%5B!%22width%3Acarriageway%22%5D%5B%22highway%22%3D%22residential%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B!%22width%3Acarriageway%22%5D%5B%22highway%22%3D%22unclassified%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B!%22width%3Acarriageway%22%5D%5B%22highway%22%3D%22tertiary%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%20%20%20%20nwr%5B!%22width%3Acarriageway%22%5D%5B%22highway%22%3D%22living_street%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B) + +## Supported attributes + +**Warning:**: this quick overview is incomplete + +| attribute | type | values which are supported by this layer | +-----|-----|----- | +| [width:carriageway](https://wiki.openstreetmap.org/wiki/Key:width:carriageway) | [distance](../SpecialInputElements.md#distance) | | + +## Featureview elements and TagRenderings + +| id | question | labels | freeform key | +-----|-----|-----|----- | +| [carriageway_width](#carriageway_width) | Hoe breed is deze straat?
_Deze straat is {width:carriageway}m breed_ | | *[width:carriageway](https://wiki.osm.org/wiki/Key:width:carriageway)* ([distance](../SpecialInputElements.md#distance)) | +| [leftover-questions](#leftover-questions) | _{questions( ,hidden)}_ | ignore-docs, added_by_default | _Multiple choice only_ | +| [split_button](#split_button)
_(Original in [questions](./BuiltinQuestions.md#split_button))_ | _{split_button()}_ | | _Multiple choice only_ | +| [lod](#lod)
_(Original in [questions](./BuiltinQuestions.md#lod))_ | _{linked_data_from_website()}_ | added_by_default | _Multiple choice only_ | +| [spacer](#spacer) | _
_ | | _Multiple choice only_ | + +### carriageway_width +The question is `Hoe breed is deze straat?` + +*Deze straat is {width:carriageway}m breed* is shown if `width:carriageway` is set. ### leftover-questions _This tagrendering has no question and is thus read-only_ @@ -141,6 +215,11 @@ _This tagrendering has no question and is thus read-only_ This tagrendering has labels `ignore-docs` `added_by_default` +### split_button +_This tagrendering has no question and is thus read-only_ + +*{split_button()}* + ### lod _This tagrendering has no question and is thus read-only_ diff --git a/Docs/URL_Parameters.md b/Docs/URL_Parameters.md index 42146a02d..a1e23434f 100644 --- a/Docs/URL_Parameters.md +++ b/Docs/URL_Parameters.md @@ -339,7 +339,7 @@ No default value set Used to share a session with another device - this saves logging in at another device -This documentation is defined in the source code at [WithUserRelatedState.ts](/src/Models/ThemeViewState/WithUserRelatedState.ts#L47) +This documentation is defined in the source code at [WithUserRelatedState.ts](/src/Models/ThemeViewState/WithUserRelatedState.ts#L46) No default value set @@ -347,7 +347,7 @@ No default value set Used to complete the login -This documentation is defined in the source code at [WithUserRelatedState.ts](/src/Models/ThemeViewState/WithUserRelatedState.ts#L52) +This documentation is defined in the source code at [WithUserRelatedState.ts](/src/Models/ThemeViewState/WithUserRelatedState.ts#L51) No default value set diff --git a/android b/android index a48aaffec..5f0fb91b4 160000 --- a/android +++ b/android @@ -1 +1 @@ -Subproject commit a48aaffec4ca59a2129834207e72ee3df85d2cd6 +Subproject commit 5f0fb91b4915d579722934752c19db4443c92d0f diff --git a/app/AppIndex.svelte b/app/AppIndex.svelte index a0d1a8f89..6fc6949b4 100644 --- a/app/AppIndex.svelte +++ b/app/AppIndex.svelte @@ -9,8 +9,9 @@ const t = Translations.t.app const lng = Locale.language let fdroid = t.downloadOnFDroid.current + let googleplay = t.getOnGoogle.current - let supportedVersions: { version: number; codename: string } = [ + let supportedVersions: { version: number; codename: string }[] = [ { version: 9, codename: "pie" }, { version: 10, codename: "quince-tart" }, { version: 11, codename: "red-velvet-cake" }, @@ -80,6 +81,10 @@ /> + + {$googleplay} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/layers/current_view/current_view.json b/assets/layers/current_view/current_view.json index 0d57a35f1..877d0daad 100644 --- a/assets/layers/current_view/current_view.json +++ b/assets/layers/current_view/current_view.json @@ -5,6 +5,7 @@ "shownByDefault": false, "title": "Current View", "popupInFloatover": true, + "titleIcons": [], "pointRendering": [], "lineRendering": [ { diff --git a/assets/layers/icons/icons.json b/assets/layers/icons/icons.json index 93e9e91ec..54ebd45d5 100644 --- a/assets/layers/icons/icons.json +++ b/assets/layers/icons/icons.json @@ -430,10 +430,10 @@ } }, { - "condition": "_favourite=yes", + "id": "favourite_icon", "description": "Only for rendering", "icon": "circle:white;heart:red", - "id": "favourite_icon", + "condition": "_favourite=yes", "metacondition": "__showTimeSensitiveIcons!=no" }, { diff --git a/assets/layers/last_click/last_click.json b/assets/layers/last_click/last_click.json index 6aaa19115..3185c513f 100644 --- a/assets/layers/last_click/last_click.json +++ b/assets/layers/last_click/last_click.json @@ -217,8 +217,8 @@ }, { "id": "debug", - "metacondition": "__featureSwitchIsDebugging=true", - "render": "{all_tags()}" + "render": "{all_tags()}", + "metacondition": "__featureSwitchIsDebugging=true" } ], "filter": [ diff --git a/assets/layers/lighthouse/lighthouse.json b/assets/layers/lighthouse/lighthouse.json index a672527c4..957f6c7aa 100644 --- a/assets/layers/lighthouse/lighthouse.json +++ b/assets/layers/lighthouse/lighthouse.json @@ -3,7 +3,7 @@ "name": { "en": "Lighthouses", "ca": "far", - "cs": "maják", + "cs": "Majáky", "cy": "goleudy", "de": "Leuchtturm", "es": "faro", @@ -18,7 +18,7 @@ "render": { "en": "Lighthouse", "ca": "far", - "cs": "maják", + "cs": "Maják", "cy": "goleudy", "de": "Leuchtturm", "es": "faro", diff --git a/assets/layers/note/note.json b/assets/layers/note/note.json index eedef08c6..b1dd36f32 100644 --- a/assets/layers/note/note.json +++ b/assets/layers/note/note.json @@ -114,9 +114,9 @@ "lineRendering": [], "tagRenderings": [ { - "classes": "p-0", "id": "conversation", - "render": "{visualize_note_comments()}" + "render": "{visualize_note_comments()}", + "classes": "p-0" }, { "id": "add_image", diff --git a/assets/layers/osm_community_index/osm_community_index.json b/assets/layers/osm_community_index/osm_community_index.json index 150fc6ecd..1c605ca38 100644 --- a/assets/layers/osm_community_index/osm_community_index.json +++ b/assets/layers/osm_community_index/osm_community_index.json @@ -66,16 +66,16 @@ ], "tagRenderings": [ { - "condition": "level=country", - "description": "The name of the country", "id": "country_name", - "render": "{nameEn} {emojiFlag}" + "description": "The name of the country", + "render": "{nameEn} {emojiFlag}", + "condition": "level=country" }, { - "condition": "_community_links~*", - "description": "Community Links (Discord, meetups, Slack groups, IRC channels, mailing lists etc...)", "id": "community_links", - "render": "{_community_links}" + "description": "Community Links (Discord, meetups, Slack groups, IRC channels, mailing lists etc...)", + "render": "{_community_links}", + "condition": "_community_links~*" } ], "filter": [ diff --git a/assets/layers/police_call_box/police_call_box.json b/assets/layers/police_call_box/police_call_box.json index de84ca690..e1cb1e51d 100644 --- a/assets/layers/police_call_box/police_call_box.json +++ b/assets/layers/police_call_box/police_call_box.json @@ -2,7 +2,8 @@ "id": "police_call_box", "name": { "en": "Police call boxes", - "cs": "Policejní telefonní budky" + "cs": "Policejní telefonní budky", + "zh_Hant": "警察詢問室" }, "description": { "en": "A type of telephone kiosk historically used by the police.", diff --git a/assets/layers/shops/shops.json b/assets/layers/shops/shops.json index 17f1ed37f..5b562d9be 100644 --- a/assets/layers/shops/shops.json +++ b/assets/layers/shops/shops.json @@ -16,7 +16,8 @@ "pa_PK": "دکان", "pl": "Sklep", "ru": "Магазин", - "uk": "Магазин" + "uk": "Магазин", + "zh_Hant": "商家" }, "description": { "en": "A shop", diff --git a/assets/layers/speed_camera/speed_camera.json b/assets/layers/speed_camera/speed_camera.json index f43d126c9..ab6ba0c10 100644 --- a/assets/layers/speed_camera/speed_camera.json +++ b/assets/layers/speed_camera/speed_camera.json @@ -32,7 +32,8 @@ "de": "Blitzer", "es": "Radar", "it": "Autovelox", - "nl": "Flitspaal" + "nl": "Flitspaal", + "zh_Hant": "測速照相" } }, "pointRendering": [ @@ -82,7 +83,8 @@ "es": "¿Cuál es la velocidad máxima permitida en este radar?", "fr": "Quelle est la vitesse maximale autorisée au niveau de ce radar ?", "it": "Qual è la velocità massima consentita a questo autovelox?", - "nl": "Wat is de maximum toegestane snelheid bij deze flitspaal?" + "nl": "Wat is de maximum toegestane snelheid bij deze flitspaal?", + "zh_Hant": "這個測速照相允許的最高速限?" }, "render": { "en": "The maximum speed allowed is {canonical(maxspeed)}", diff --git a/assets/svg/north_arrow.svg b/assets/svg/north_arrow.svg index 20e124970..2580424c9 100644 --- a/assets/svg/north_arrow.svg +++ b/assets/svg/north_arrow.svg @@ -24,8 +24,8 @@ inkscape:deskcolor="#d1d1d1" showguides="true" inkscape:zoom="31.809268" - inkscape:cx="10.374335" - inkscape:cy="10.327179" + inkscape:cx="7.4506587" + inkscape:cy="14.445475" inkscape:window-width="1920" inkscape:window-height="1005" inkscape:window-x="0" @@ -35,13 +35,13 @@ + style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:0.82973289;stroke-width:0.40276519;stroke-dasharray:none"> + style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:0.82973289;stroke-width:0.40276519;stroke-dasharray:none" /> = 14 ? overlapWith(feat)('grb').map(ff => ff.feat.properties) : undefined", "_applicable_conflate=get(feat)('_overlapping')?.filter(p => p._imported !== 'yes' && (!p['_imported_osm_still_fresh'] || !p['_imported_osm_object_found']) && p['_overlap_absolute'] > 10 && p['_overlap_percentage'] > 80 && p['_reverse_overlap_percentage'] > 80)?.map(p => p.id)", diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json index 80382fd51..5b19fa6de 100644 --- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json +++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json @@ -38,9 +38,6 @@ "zh_Hant": "顯示由MapComplete進行的變動" }, "icon": "./assets/svg/logo.svg", - "startZoom": 1, - "startLat": 0, - "startLon": 0, "hideFromOverview": true, "layers": [ { diff --git a/assets/themes/onwheels/onwheels.json b/assets/themes/onwheels/onwheels.json index 3c2318ab1..3801f0549 100644 --- a/assets/themes/onwheels/onwheels.json +++ b/assets/themes/onwheels/onwheels.json @@ -598,6 +598,7 @@ { "builtin": "current_view", "override": { + "popupInFloatover": "title", "+pointRendering": [ { "location": [ diff --git a/assets/themes/width/width.json b/assets/themes/width/width.json index 47e007b3b..e2de717aa 100644 --- a/assets/themes/width/width.json +++ b/assets/themes/width/width.json @@ -26,9 +26,9 @@ "_car_width:=2 /* The width that a single car needs */", "_cyclistWidth:=1.5 /* The width a single cyclist needs to be safely overtaken */", "_pedestrianWidth:=0.75 /* The width a pedestrian needs if sidewalks are missing */", - "_has_left_parking=(feat.properties['parking:lane:left'] ?? feat.properties['parking:lane:both']) === 'parallel'", - "_has_right_parking=(feat.properties['parking:lane:right'] ?? feat.properties['parking:lane:both']) === 'parallel'", - "_has_other_parking= ['parking:lane:left','parking:lane:right','parking:lane:both'].some(key => ['perpendicular','diagonal'].indexOf(feat.properties[key]) >= 0)", + "_has_left_parking=['lane','yes', 'parallel'].indexOf(feat.properties['parking:left'] ?? feat.properties['parking:both']) >= 0", + "_has_right_parking=['lane','yes','parallel'].indexOf(feat.properties['parking:right'] ?? feat.properties['parking:both']) >= 0", + "_has_other_parking= ['parking:left:orientation','parking:right:orientation','parking:both:orientation'].some(key => ['perpendicular','diagonal'].indexOf(feat.properties[key]) >= 0)", "_parallel_parking_count=get(feat)('_has_right_parking') + get(feat)('_has_left_parking') /* in javascript logic: true + true == 2*/", "_width:needed:parking=get(feat)('_parallel_parking_count') * get(feat)('_car_width')", "_has_sidewalk_left=['left','both'].indexOf(feat.properties['sidewalk']) >= 0", @@ -154,7 +154,6 @@ }, { "id": "has_sidewalks", - "condition": "id=disabled", "question": { "nl": "Heeft deze straat voetpaden?" }, @@ -184,7 +183,9 @@ } } ] - } + }, + "questions", + "{nearby_images(closed,readonly)}" ], "pointRendering": [ { @@ -239,6 +240,67 @@ } } ] + }, + { + "id": "street_no_width", + "description": "Typical city streets with width", + "name": { + "nl": "Straten zonder breedte" + }, + "source": { + "osmTags": { + "and": [ + "width:carriageway=", + { + "or": [ + "highway=residential", + "highway=unclassified", + "highway=tertiary", + "highway=living_street" + ] + } + ] + } + }, + "minzoom": 19, + "title": { + "render": { + "nl": "{name}" + }, + "mappings": [ + { + "if": "name=", + "then": { + "nl": "Naamloos segment" + } + } + ] + }, + "tagRenderings": [ + { + "id": "carriageway_width", + "render": "Deze straat is {width:carriageway}m breed", + "question": "Hoe breed is deze straat?", + "freeform": { + "key": "width:carriageway", + "type": "distance", + "helperArgs": { + "zoom": 21, + "background": "map" + } + } + } + ], + "pointRendering": null, + "lineRendering": [ + { + "color": "#ff00ff", + "width": "4" + } + ], + "allowMove": false, + "allowSplit": true, + "allowDeletion": false } ], "lockLocation": [ diff --git a/langs/cs.json b/langs/cs.json index 008ce1840..910d00e3c 100644 --- a/langs/cs.json +++ b/langs/cs.json @@ -7,7 +7,6 @@ "download": "Stáhnout aplikaci", "downloadOnFDroid": "Stáhnout MapComplete na F-Droidu", "getOnObtanium": "Získat na Obtainiu", - "intro": "MapComplete je k dispozici jako aplikace pro Android k přímému stažení. Pracujeme na to, aby byla zveřejněna i v repozitáři F-Droid.", "legacyExplanation": "Kvůli restrikcím společnosti Google nelze zkompilovat identický balíček APK pro novější i starší verze systému Android.\n\n Pokud instalace z F-Droidu, Google Play, Obtainia nebo instalace výše odkazované nejnovější verze ('latest') selže,\n zkuste balíčky pro starší verze Androidu, které jsou k dispozici níže.", "legacyHeader": "Sestavení pro starší telefony se systémem Android", "noPlayServices": "Aplikace funguje bez Google Play Services", diff --git a/langs/da.json b/langs/da.json index 1560d1b48..a865c34c8 100644 --- a/langs/da.json +++ b/langs/da.json @@ -7,7 +7,6 @@ "download": "Download appen", "downloadOnFDroid": "Download MapComplete på F-Droid", "getOnObtanium": "Hent på Obtainium", - "intro": "MapComplete er tilgængelig som Android-app som direkte download. Vi arbejder på også at udgive den på FDroid.", "noPlayServices": "Appen fungerer uden Google Play Services", "older": "Se ældre builds", "title": "MapComplete Android-app" diff --git a/langs/de.json b/langs/de.json index 030d3fb36..896e10041 100644 --- a/langs/de.json +++ b/langs/de.json @@ -5,7 +5,6 @@ "app": { "back": "Zurück zu MapComplete", "download": "Lade die App runter", - "intro": "MapComplete gibt's als Android-App zum direkten Download. Wir arbeiten daran, die App auch auf FDroid zu veröffentlichen.", "noPlayServices": "Die App funktioniert ohne Google Play Services", "older": "Ältere Versionen ansehen", "title": "MapComplete Android-App" diff --git a/langs/en.json b/langs/en.json index 52612c248..18183fd94 100644 --- a/langs/en.json +++ b/langs/en.json @@ -6,8 +6,9 @@ "back": "Go back to MapComplete", "download": "Download the app", "downloadOnFDroid": "Download MapComplete on F-Droid", + "getOnGoogle": "Download MapComplete on Google Playstore", "getOnObtanium": "Get on Obtainium", - "intro": "MapComplete is available as Android App as direct download. We are working on publishing this in on FDroid too.", + "intro": "MapComplete is available as Android App on various app stores. Installing the app version makes it easier to access MapComplete and uses less internet. However, the web version has the same features.", "legacyExplanation": "Due to restrictions by Google, it is not possible to compile an identical APK for newer and older Android versions.\nIf installing via F-Droid, Google Play, Obtainium or installing 'latest' above failed, try a versions for older versions of android are available below.", "legacyHeader": "Builds for older Android phones", "noPlayServices": "The app works without Google Play Services", @@ -22,6 +23,9 @@ "retrying": "Loading data failed. Trying again in {count} seconds…", "zoomIn": "Zoom in to view or edit the data" }, + "collectionTimes": { + "addTime": "Add moment" + }, "communityIndex": { "available": "This community speaks {native}", "intro": "Get in touch with other people to get to know them, learn from them, …", @@ -674,6 +678,7 @@ }, "input_helpers": { "distance": { + "measureAgain": "Start new measurement from current location", "setFirst": "Measure from current location" } }, @@ -751,6 +756,22 @@ "typeText": "Type some text to add a comment", "warnAnonymous": "You are not logged in. We won't be able to contact you to resolve your issue." }, + "offline": { + "actions": "Actions", + "autoCheckmark": "Automatically download the basemap when browsing around", + "autoExplanation": "If checked, MapComplete will automatically download the basemap to the cache for the area. This results in bigger initial data loads, but requires less internet over the long run. If you plan to visit a region with less connectivity, you can also select the area you want to download below.", + "autoExplanationIntro": "What does automatically downloading basemaps mean?", + "date": "Map generation data", + "delete": "Delete basemap", + "deleteAll": "Delete all basemaps", + "download": "Download area", + "installing": "Data is being downloaded", + "localOnMap": "Offline basemaps on the map", + "name": "Name", + "overview": "Offline basemaps overview", + "range": "Zoom ranges", + "size": "Size" + }, "plantDetection": { "back": "Back to species overview", "button": "Automatically detect the plant species using the AI of Plantnet.org", diff --git a/langs/fr.json b/langs/fr.json index fccf766da..04ba175d9 100644 --- a/langs/fr.json +++ b/langs/fr.json @@ -7,7 +7,6 @@ "download": "Télécharger l'application", "downloadOnFDroid": "Télécharger MapComplete sur F-Droid", "getOnObtanium": "Obtenir sur Obtainium", - "intro": "MapComplete est disponible en tant qu'application Android en téléchargement direct. Nous nous efforçons de publier également cette application sur FDroid.", "legacyExplanation": "En raison des restrictions imposées par Google, il n'est pas possible de compiler un APK identique pour les versions Android récentes et anciennes.\nSi l'installation via F-Droid, Google Play, Obtainium ou l'installation de la « dernière version » ci-dessus a échoué, essayez une des versions pour les anciennes versions d'Android disponibles ci-dessous.", "legacyHeader": "Versions pour les anciens téléphones Android", "noPlayServices": "L'application fonctionne sans Google Play Services", diff --git a/langs/it.json b/langs/it.json index e57972b3a..50c9ed566 100644 --- a/langs/it.json +++ b/langs/it.json @@ -5,7 +5,6 @@ "app": { "back": "Ritorna a MapComplete", "download": "Scarica l'app", - "intro": "MapComplete è disponibile come App Android in download diretto. Stiamo lavorando per pubblicarla anche su FDroid.", "noPlayServices": "L'app funziona senza Google Play Services", "older": "Vedi le vecchie versioni", "title": "MapComplete App per Android" diff --git a/langs/layers/cs.json b/langs/layers/cs.json index 2b661de30..7b6cc195a 100644 --- a/langs/layers/cs.json +++ b/langs/layers/cs.json @@ -7467,7 +7467,7 @@ } }, "lighthouse": { - "name": "maják", + "name": "Majáky", "presets": { "0": { "title": "maják" @@ -7485,7 +7485,7 @@ "then": "{name}" } }, - "render": "maják" + "render": "Maják" } }, "love_hotel": { diff --git a/langs/layers/zh_Hant.json b/langs/layers/zh_Hant.json index 99b50dcb9..44fd18acb 100644 --- a/langs/layers/zh_Hant.json +++ b/langs/layers/zh_Hant.json @@ -886,6 +886,9 @@ "maxspeed": { "description": "顯示每條道路的允許速度" }, + "police_call_box": { + "name": "警察詢問室" + }, "postboxes": { "description": "這圖層顯示郵筒。", "name": "郵筒", @@ -1051,6 +1054,7 @@ } }, "shops": { + "name": "商家", "tagRenderings": { "erotic_shop_fetish": { "mappings": { @@ -1074,6 +1078,16 @@ } } }, + "speed_camera": { + "tagRenderings": { + "maxspeed": { + "question": "這個測速照相允許的最高速限?" + } + }, + "title": { + "render": "測速照相" + } + }, "sports_centre": { "tagRenderings": { "sport_centre-sport": { diff --git a/langs/nl.json b/langs/nl.json index bafd298b4..f0c0c7d26 100644 --- a/langs/nl.json +++ b/langs/nl.json @@ -6,7 +6,6 @@ "back": "Ga terug naar MapComplete", "download": "Download de laatste versie", "downloadOnFDroid": "Download MapComplete op F-Droid", - "intro": "MapComplete is beschikbaar als Android App. Deze is binnenkort ook in F-Droid beschikbaar", "older": "Bekijk oudere versies", "title": "MapComplete Anrdoid App" }, diff --git a/langs/zh_Hant.json b/langs/zh_Hant.json index 38b9cf7bd..4ecd6d947 100644 --- a/langs/zh_Hant.json +++ b/langs/zh_Hant.json @@ -7,7 +7,6 @@ "download": "下載應用程式", "downloadOnFDroid": "在 F-Droid 下載 MapComplete", "getOnObtanium": "從 Obtainium 取得", - "intro": "MapComplete可以在Android App直接下載。我們也計畫在Fdroid發佈。", "legacyExplanation": "由於Google的限制,並無法為更新與更舊的Android編譯相同的APK\n 版本。\n\n 如果你透過F-Droid、Google Play、Obtainium或是安裝「最新」的版本失敗,\n 請為其他較舊Android版本使用其他版本。", "legacyHeader": "為較舊Android手機建構", "noPlayServices": "本應用無需 Google Play 服務即可運行", diff --git a/package-lock.json b/package-lock.json index d27685ab8..3ca9feeba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mapcomplete", - "version": "0.55.1", + "version": "0.55.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mapcomplete", - "version": "0.55.1", + "version": "0.55.5", "hasInstallScript": true, "license": "GPL-3.0-or-later", "dependencies": { @@ -13004,9 +13004,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001734", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001734.tgz", - "integrity": "sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==", + "version": "1.0.30001735", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", + "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", "dev": true, "funding": [ { diff --git a/package.json b/package.json index e89aa560b..150b17ef9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mapcomplete", - "version": "0.55.1", + "version": "0.55.5", "repository": "https://source.mapcomplete.org/MapComplete/MapComplete", "description": "A small website to edit OSM easily", "bugs": "hhttps://source.mapcomplete.org/MapComplete/MapComplete/issues", diff --git a/public/css/index-tailwind-output.css b/public/css/index-tailwind-output.css index d0eba851f..34744bb80 100644 --- a/public/css/index-tailwind-output.css +++ b/public/css/index-tailwind-output.css @@ -5198,23 +5198,22 @@ input[type="range"].range-lg::-moz-range-thumb { --low-interaction-background: #eeeeee; --low-interaction-background-50: #eeeeee90; --low-interaction-foreground: black; - --low-interaction-contrast: #ff00ff; --low-interaction-border: #dcdcdc; --interactive-background: #dddddd; --interactive-foreground: black; - --interactive-contrast: #ff00ff; + --interactive-contrast: #cd1dcd; --interaction-border: #bfbfbf; - --button-background: #282828; + --button-background-primary: #191919; --button-background-hover: #484848; - --button-primary-background-hover: #353535; + --button-primary-background-hover: rgba(48, 47, 47, 0.94); --button-foreground: white; - --button-border-color: #F7F7F7; + --button-background: #fafafa; + --button-border: #B8B8B8; --disabled: #B8B8B8; --disabled-font: #B8B8B8; - --catch-detail-color: black; - /*#3a3aeb;*/ - --catch-detail-foregroundcolor: white; - --catch-detail-color-contrast: #fb3afb; + --catch-detail-color: var(--background-color); + --catch-detail-foregroundcolor: var(--foreground-color); + --catch-detail-color-contrast: var(--interactive-contrast); --image-carousel-height: 350px; /** Technical value, used by icon.svelte */ @@ -5323,7 +5322,7 @@ input[type="text"] { } .border-interactive { - border: 2px dashed var(--catch-detail-color-contrast); + border: 2px dashed var(--interactive-contrast); border-radius: 0.5rem; } @@ -5358,11 +5357,14 @@ button, .button { align-items: center; padding: 0.25rem 1rem; margin: 0.25rem; - border: 1px solid var(--button-background-hover); - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); - border-radius: 15px; + background: var(--button-background); + border: 2px solid var(--button-border); + border-radius: 7px; + transition: background-color 200ms; +} + +.low-interaction button{ background: var(--background-color); - transition: all 200ms; } .group > button { @@ -5374,7 +5376,12 @@ button.w-full { margin-left: 0; } -button:hover:not(.disabled):not(.as-link), .button:hover:not(.disabled):not(.as-link) { +button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) { + background-color: var(--button-primary-background-hover); + border: 2px solid var(--interactive-contrast) +} + +button:hover:not(.disabled):not(.as-link):not(.primary), .button:hover:not(.disabled):not(.as-link):not(.primary) { background-color: var(--low-interaction-background); } @@ -5388,12 +5395,8 @@ button:focus, .button:focus { button.primary, .button.primary { color: var(--button-foreground); - background-color: var(--button-background); - border-color: var(--button-border-color); -} - -button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) { - background-color: var(--button-primary-background-hover); + background-color: var(--button-background-primary); + border: 2px solid var(--button-background-primary) } button.disabled { @@ -5444,7 +5447,7 @@ button.unstyled, .button-unstyled button { /******* Other input elements ******/ .hover-alert:hover { - color: var(--catch-detail-color-contrast) + color: var(--interactive-contrast) } .links-w-full a:not(.weblate-link), .links-w-full button.as-link { @@ -5468,7 +5471,7 @@ select { } select:hover { - border-color: var(--catch-detail-color-contrast); + border-color: var(--interactive-contrast); } .neutral-label { @@ -5570,17 +5573,6 @@ h2.group { background-color: var(--interactive-background); } -.information { - /* The class to convey important information which does _not_ denote an error... */ - background-color: var(--low-interaction-background); - color: var(--alert-foreground-color); - border-radius: 1em; - margin: 0.25em; - text-align: center; - padding: 0.15em 0.3em; - border: 3px dotted var(--catch-detail-color-contrast); -} - .low-interaction .interactive { background-color: var(--interactive-background); } diff --git a/scripts/fetchLanguages.ts b/scripts/fetchLanguages.ts index 8f58b3805..2b001df70 100644 --- a/scripts/fetchLanguages.ts +++ b/scripts/fetchLanguages.ts @@ -18,7 +18,7 @@ interface value { } interface LanguageSpecResult { - directionalityLabel: value + directionalityLabel?: value lang: value code: value label: value @@ -77,6 +77,29 @@ async function fetchRegularLanguages() { return result.results.bindings } +async function fetchSignLanguages() { + const query = ` + + SELECT ?lang ?label ?code +WHERE +{ + ?lang wdt:P31 wd:Q34228. + OPTIONAL { + ?lang wdt:P1813 ?code. + } + ?lang rdfs:label ?label. + SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } +}` + const url = Wikidata.wds.sparqlQuery(query) + + // request the generated URL with your favorite HTTP request library + const result = await Utils.downloadJson<{ results: { bindings: any[] } }>(url, { + "User-Agent": "MapComplete script", + }) + return result.results.bindings + +} + /** * Fetches the object as is. Sets a 'code' binding as predifined value * @param id @@ -169,7 +192,20 @@ async function getOfficialLanguagesPerCountryCached( return officialLanguages } +async function generateSignLanguageOverview(){ + const signLanguages = await fetchSignLanguages() + const signPerId = WikidataUtils.extractLanguageData(signLanguages, WikidataUtils.languageRemapping) + const asRecord : Record> = {} + for (const lng of signPerId.keys()) { + asRecord[lng.toLowerCase()] = Utils.MapToObj(signPerId.get(lng).translations) + } + return asRecord + +} + async function main(wipeCache = false) { + const signLanguages = await generateSignLanguageOverview() + const cacheFile = "./src/assets/generated/languages-wd.json" if (wipeCache || !existsSync(cacheFile)) { console.log("Refreshing cache") @@ -181,7 +217,8 @@ async function main(wipeCache = false) { const data = JSON.parse(readFileSync(cacheFile, { encoding: "utf8" })) const perId = WikidataUtils.extractLanguageData(data, WikidataUtils.languageRemapping) const nativeList = getNativeList(perId) - writeFileSync("./src/assets/language_native.json", JSON.stringify(nativeList, null, " ")) + writeFileSync("./src/assets/language_native.json", JSON.stringify({ ...nativeList, ...signLanguages }, null, " ")) + const languagesPerCountry = Utils.TransposeMap( await getOfficialLanguagesPerCountryCached(wipeCache) ) diff --git a/scripts/generateLayerOverview.ts b/scripts/generateLayerOverview.ts index 6414ed5f6..964963620 100644 --- a/scripts/generateLayerOverview.ts +++ b/scripts/generateLayerOverview.ts @@ -38,7 +38,10 @@ import { ValidateThemeAndLayers } from "../src/Models/ThemeConfig/Conversion/Val import { ExtractImages } from "../src/Models/ThemeConfig/Conversion/FixImages" import { TagRenderingConfigJson } from "../src/Models/ThemeConfig/Json/TagRenderingConfigJson" import { Lists } from "../src/Utils/Lists" -import { LayerConfigDependencyGraph, LevelInfo } from "../src/Models/ThemeConfig/LayerConfigDependencyGraph" +import { + LayerConfigDependencyGraph, + LevelInfo, +} from "../src/Models/ThemeConfig/LayerConfigDependencyGraph" import { AddContextToTranslations } from "../src/Models/ThemeConfig/Conversion/AddContextToTranslations" // This scripts scans 'src/assets/layers/*.json' for layer definition files and 'src/assets/themes/*.json' for theme definition files. @@ -114,7 +117,10 @@ class AddIconSummary extends DesugaringStep<{ raw: LayerConfigJson; parsed: Laye static singleton = new AddIconSummary() constructor() { - super("AddIconSummary", "Adds an icon summary ('_layerIcon') for quick reference. This previews how the layer should be shown in e.g. the filter menu") + super( + "AddIconSummary", + "Adds an icon summary ('_layerIcon') for quick reference. This previews how the layer should be shown in e.g. the filter menu" + ) } convert(json: { raw: LayerConfigJson; parsed: LayerConfig }) { @@ -699,11 +705,14 @@ class LayerOverviewUtils extends Script { ) const path = "assets/layers/questions/questions.json" - const sharedQuestionsRaw: LayerConfigJson = this.parseLayer(doesImageExist, prepareLayer, path).raw - const sharedQuestions: LayerConfigJson = new AddContextToTranslations("").convertStrict( - sharedQuestionsRaw, - ConversionContext.construct(["layers:questions"], []) - ) + const sharedQuestionsRaw: LayerConfigJson = this.parseLayer( + doesImageExist, + prepareLayer, + path + ).raw + const sharedQuestions: LayerConfigJson = new AddContextToTranslations( + "" + ).convertStrict(sharedQuestionsRaw, ConversionContext.construct(["layers:questions"], [])) const dict = new Map() for (const tr of sharedQuestions.tagRenderings) { diff --git a/scripts/generateTranslations.ts b/scripts/generateTranslations.ts index 24776542f..1c9ea2bbc 100644 --- a/scripts/generateTranslations.ts +++ b/scripts/generateTranslations.ts @@ -567,7 +567,7 @@ function MergeTranslation(source: any, target: any, language: string, context: s const sourceV = source[key] const targetV = target[keyRemapping?.get(key) ?? key] - if(targetV === undefined){ + if (targetV === undefined) { throw `Merging translations failed; targetV is undefined for context ${context}; but we are trying to add ${sourceV} (${key}) to it` } diff --git a/src/Logic/FeatureSource/FeatureSource.ts b/src/Logic/FeatureSource/FeatureSource.ts index a6278e77d..db1b0be0d 100644 --- a/src/Logic/FeatureSource/FeatureSource.ts +++ b/src/Logic/FeatureSource/FeatureSource.ts @@ -36,6 +36,6 @@ export interface FeatureSourceForTile extends Featu /** * A feature source which is aware of the indexes it contains */ -export interface IndexedFeatureSource extends FeatureSource { +export interface IndexedFeatureSource extends FeatureSource { readonly featuresById: Store> } diff --git a/src/Logic/FeatureSource/Sources/FavouritesFeatureSource.ts b/src/Logic/FeatureSource/Sources/FavouritesFeatureSource.ts index 5a3e7d2e8..452ae1d92 100644 --- a/src/Logic/FeatureSource/Sources/FavouritesFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/FavouritesFeatureSource.ts @@ -209,6 +209,9 @@ export default class FavouritesFeatureSource extends StaticFeatureSource { continue } const store = featureProperties.getStore(id) + if (store === undefined) { + continue + } const origValue = store.data._favourite if (detected.indexOf(id) >= 0) { if (origValue !== "yes") { diff --git a/src/Logic/FeatureSource/Sources/FeatureSourceMerger.ts b/src/Logic/FeatureSource/Sources/FeatureSourceMerger.ts index b6eaa9b3f..c9b9db19d 100644 --- a/src/Logic/FeatureSource/Sources/FeatureSourceMerger.ts +++ b/src/Logic/FeatureSource/Sources/FeatureSourceMerger.ts @@ -1,17 +1,16 @@ import { Store, UIEventSource } from "../../UIEventSource" import { FeatureSource, IndexedFeatureSource, UpdatableFeatureSource } from "../FeatureSource" import { Feature } from "geojson" -import { OsmFeature } from "../../../Models/OsmFeature" import { Lists } from "../../../Utils/Lists" /** * The featureSourceMerger receives complete geometries from various sources. * If multiple sources contain the same object (as determined by 'id'), only one copy of them is retained */ -export default class FeatureSourceMerger - implements IndexedFeatureSource +export default class FeatureSourceMerger = FeatureSource> + implements IndexedFeatureSource { - public features: UIEventSource = new UIEventSource([]) + public features: UIEventSource = new UIEventSource([]) public readonly featuresById: Store> protected readonly _featuresById: UIEventSource> protected readonly _sources: Src[] @@ -55,7 +54,7 @@ export default class FeatureSourceMerger = new Map() + const all: Map = new Map() const unseen = new Set() // We seed the dictionary with the previously loaded features const oldValues = this.features.data ?? [] @@ -118,10 +117,11 @@ export default class FeatureSourceMerger = UpdatableFeatureSource > - extends FeatureSourceMerger - implements IndexedFeatureSource, UpdatableFeatureSource + extends FeatureSourceMerger + implements IndexedFeatureSource, UpdatableFeatureSource { constructor(...sources: Src[]) { super(...sources) diff --git a/src/Logic/FeatureSource/Sources/GeoJsonSource.ts b/src/Logic/FeatureSource/Sources/GeoJsonSource.ts index 9b217bcfc..5faf3352c 100644 --- a/src/Logic/FeatureSource/Sources/GeoJsonSource.ts +++ b/src/Logic/FeatureSource/Sources/GeoJsonSource.ts @@ -3,13 +3,15 @@ import { Utils } from "../../../Utils" import { FeatureSource } from "../FeatureSource" import { BBox } from "../../BBox" import { GeoOperations } from "../../GeoOperations" -import { Feature } from "geojson" +import { Feature, Geometry } from "geojson" import LayerConfig from "../../../Models/ThemeConfig/LayerConfig" import { Tiles } from "../../../Models/TileRange" -export default class GeoJsonSource implements FeatureSource { - private readonly _features: UIEventSource = new UIEventSource(undefined) - public readonly features: Store = this._features +export default class GeoJsonSource>> implements FeatureSource { + private readonly _features: UIEventSource = new UIEventSource(undefined) + public readonly features: Store = this._features private readonly seenids: Set private readonly idKey?: string private readonly url: string @@ -96,7 +98,7 @@ export default class GeoJsonSource implements FeatureSource { const url = this.url try { const cacheAge = (options?.maxCacheAgeSec ?? 300) * 1000 - let json = <{ features: Feature[] }>await Utils.downloadJsonCached(url, cacheAge) + let json = <{ features: T[] }>await Utils.downloadJsonCached(url, cacheAge) if (json.features === undefined || json.features === null) { json.features = [] @@ -106,7 +108,7 @@ export default class GeoJsonSource implements FeatureSource { json = GeoOperations.GeoJsonToWGS84(json) } - const newFeatures: Feature[] = [] + const newFeatures: T[] = [] let i = 0 for (const feature of json.features) { if (feature.geometry.type === "Point") { diff --git a/src/Logic/FeatureSource/Sources/MvtSource.ts b/src/Logic/FeatureSource/Sources/MvtSource.ts index ccaa6c78a..c487814b4 100644 --- a/src/Logic/FeatureSource/Sources/MvtSource.ts +++ b/src/Logic/FeatureSource/Sources/MvtSource.ts @@ -5,8 +5,8 @@ import { FeatureSourceForTile, UpdatableFeatureSource } from "../FeatureSource" import { MvtToGeojson } from "mvt-to-geojson" import { OsmTags } from "../../../Models/OsmFeature" -export default class MvtSource implements FeatureSourceForTile, UpdatableFeatureSource { - public readonly features: Store[]> +export default class MvtSource> implements FeatureSourceForTile, UpdatableFeatureSource { + public readonly features: Store public readonly x: number public readonly y: number public readonly z: number diff --git a/src/Logic/FeatureSource/Sources/OsmFeatureSource.ts b/src/Logic/FeatureSource/Sources/OsmFeatureSource.ts index ea08cb463..3f84d0104 100644 --- a/src/Logic/FeatureSource/Sources/OsmFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/OsmFeatureSource.ts @@ -4,16 +4,16 @@ import { ImmutableStore, Store, UIEventSource } from "../../UIEventSource" import { Tiles } from "../../../Models/TileRange" import { BBox } from "../../BBox" import { TagsFilter } from "../../Tags/TagsFilter" -import { Feature } from "geojson" import FeatureSourceMerger from "../Sources/FeatureSourceMerger" import OsmObjectDownloader from "../../Osm/OsmObjectDownloader" import FullNodeDatabaseSource from "../TiledFeatureSource/FullNodeDatabaseSource" import { Lists } from "../../../Utils/Lists" +import { OsmFeature } from "../../../Models/OsmFeature" /** * If a tile is needed (requested via the UIEventSource in the constructor), will download the appropriate tile and pass it via 'handleTile' */ -export default class OsmFeatureSource extends FeatureSourceMerger { +export default class OsmFeatureSource extends FeatureSourceMerger { private readonly _bounds: Store private readonly isActive: Store private readonly _backend: string @@ -33,7 +33,7 @@ export default class OsmFeatureSource extends FeatureSourceMerger { public readonly isRunning: UIEventSource = new UIEventSource(false) private readonly _downloadedTiles: Set = new Set() - private readonly _downloadedData: Feature[][] = [] + private readonly _downloadedData: T[][] = [] private readonly _patchRelations: boolean /** * Downloads data directly from the OSM-api within the given bounds. @@ -90,7 +90,7 @@ export default class OsmFeatureSource extends FeatureSourceMerger { } } - private registerFeatures(features: Feature[]): void { + private registerFeatures(features: T[]): void { this._downloadedData.push(features) super.addData(this._downloadedData) } @@ -160,7 +160,7 @@ export default class OsmFeatureSource extends FeatureSourceMerger { const osmJson = await Utils.downloadJsonCached(url, 2000) try { this.options?.fullNodeDatabase?.handleOsmJson(osmJson, z, x, y) - let features = []>OsmToGeoJson(osmJson, { + let features = OsmToGeoJson(osmJson, { flatProperties: true, }).features diff --git a/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts b/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts index a8d530027..37be66206 100644 --- a/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/OverpassFeatureSource.ts @@ -1,4 +1,3 @@ -import { Feature, FeatureCollection, Geometry } from "geojson" import { UpdatableFeatureSource } from "../FeatureSource" import { ImmutableStore, Store, UIEventSource } from "../../UIEventSource" import LayerConfig from "../../../Models/ThemeConfig/LayerConfig" @@ -7,7 +6,7 @@ import { Overpass } from "../../Osm/Overpass" import { Utils } from "../../../Utils" import { TagsFilter } from "../../Tags/TagsFilter" import { BBox } from "../../BBox" -import { OsmTags } from "../../../Models/OsmFeature" +import { OsmFeature } from "../../../Models/OsmFeature" import { Lists } from "../../../Utils/Lists" ;("use strict") @@ -16,11 +15,11 @@ import { Lists } from "../../../Utils/Lists" * A wrapper around the 'Overpass'-object. * It has more logic and will automatically fetch the data for the right bbox and the active layers */ -export default class OverpassFeatureSource implements UpdatableFeatureSource { +export default class OverpassFeatureSource implements UpdatableFeatureSource { /** * The last loaded features, as geojson */ - public readonly features: UIEventSource = new UIEventSource(undefined) + public readonly features: UIEventSource = new UIEventSource(undefined) public readonly runningQuery: UIEventSource = new UIEventSource(false) public readonly timeout: UIEventSource = new UIEventSource(0) @@ -111,7 +110,7 @@ export default class OverpassFeatureSource implements UpdatableFeatureSource { if (!navigator.onLine) { return } - let data: FeatureCollection = undefined + let data: { features: T[] } = undefined let lastUsed = 0 const start = new Date() const layersToDownload = this._layersToDownload.data @@ -143,7 +142,7 @@ export default class OverpassFeatureSource implements UpdatableFeatureSource { return undefined } this.runningQuery.setData(true) - data = (await overpass.queryGeoJson(bounds))[0] + data = (await overpass.queryGeoJson(bounds))[0] } catch (e) { this.retries.data++ this.retries.ping() diff --git a/src/Logic/FeatureSource/Sources/StaticFeatureSource.ts b/src/Logic/FeatureSource/Sources/StaticFeatureSource.ts index ccbedda8f..7c060196a 100644 --- a/src/Logic/FeatureSource/Sources/StaticFeatureSource.ts +++ b/src/Logic/FeatureSource/Sources/StaticFeatureSource.ts @@ -26,9 +26,6 @@ export default class StaticFeatureSource implements } } - public static fromGeojson(geojson: T[]): StaticFeatureSource { - return new StaticFeatureSource(geojson) - } } export class WritableStaticFeatureSource diff --git a/src/Logic/FeatureSource/Sources/ThemeSource.ts b/src/Logic/FeatureSource/Sources/ThemeSource.ts index fc79e477a..29d38ee38 100644 --- a/src/Logic/FeatureSource/Sources/ThemeSource.ts +++ b/src/Logic/FeatureSource/Sources/ThemeSource.ts @@ -12,7 +12,7 @@ import LocalStorageFeatureSource from "../TiledFeatureSource/LocalStorageFeature import FullNodeDatabaseSource from "../TiledFeatureSource/FullNodeDatabaseSource" import DynamicMvtileSource from "../TiledFeatureSource/DynamicMvtTileSource" import FeatureSourceMerger from "./FeatureSourceMerger" -import { Feature } from "geojson" +import { Feature, Geometry } from "geojson" import { OsmFeature } from "../../../Models/OsmFeature" /** @@ -20,7 +20,7 @@ import { OsmFeature } from "../../../Models/OsmFeature" * * Note that special layers (with `source=null` will be ignored) */ -export default class ThemeSource implements IndexedFeatureSource { +export default class ThemeSource & {id: string}>> implements IndexedFeatureSource { /** * Indicates if a data source is loading something */ @@ -28,12 +28,12 @@ export default class ThemeSource implements IndexedFeatureSource { public static readonly fromCacheZoomLevel = 15 - public features: UIEventSource = new UIEventSource([]) - public readonly featuresById: Store> - private readonly core: Store + public features: UIEventSource = new UIEventSource([]) + public readonly featuresById: Store> + private readonly core: Store> - private readonly addedSources: FeatureSource[] = [] - private readonly addedItems: OsmFeature[] = [] + private readonly addedSources: FeatureSource[] = [] + private readonly addedItems: T[] = [] constructor( layers: LayerConfig[], @@ -47,11 +47,11 @@ export default class ThemeSource implements IndexedFeatureSource { const isLoading = new UIEventSource(true) this.isLoading = isLoading - const features = (this.features = new UIEventSource([])) + const features = (this.features = new UIEventSource([])) const featuresById = (this.featuresById = new UIEventSource(new Map())) this.core = mvtAvailableLayers.mapD((mvtAvailableLayers) => { this.core?.data?.destruct() - const core = new ThemeSourceCore( + const core = new ThemeSourceCore( layers, featureSwitches, mapProperties, @@ -73,12 +73,12 @@ export default class ThemeSource implements IndexedFeatureSource { return this.core.data.downloadAll() } - public addSource(source: FeatureSource) { + public addSource(source: FeatureSource) { this.core.data?.addSource(source) this.addedSources.push(source) } - public addItem(obj: OsmFeature) { + public addItem(obj: T) { this.core.data?.addItem(obj) this.addedItems.push(obj) } @@ -89,7 +89,7 @@ export default class ThemeSource implements IndexedFeatureSource { * * Note that special layers (with `source=null` will be ignored) */ -class ThemeSourceCore extends FeatureSourceMerger { +class ThemeSourceCore extends FeatureSourceMerger { /** * This source is _only_ triggered when the data is downloaded for CSV export * @private @@ -113,10 +113,10 @@ class ThemeSourceCore extends FeatureSourceMerger { const geojsonlayers = layers.filter((layer) => layer.source.geojsonSource !== undefined) const osmLayers = layers.filter((layer) => layer.source.geojsonSource === undefined) - const fromCache = new Map() + const fromCache = new Map>() if (featureSwitches.featureSwitchCache.data) { for (const layer of osmLayers) { - const src = new LocalStorageFeatureSource( + const src = new LocalStorageFeatureSource( backend, layer, ThemeSource.fromCacheZoomLevel, @@ -129,13 +129,13 @@ class ThemeSourceCore extends FeatureSourceMerger { fromCache.set(layer.id, src) } } - const mvtSources: UpdatableFeatureSource[] = osmLayers + const mvtSources: UpdatableFeatureSource[] = osmLayers .filter((f) => mvtAvailableLayers.has(f.id)) - .map((l) => ThemeSourceCore.setupMvtSource(l, mapProperties, isDisplayed(l.id))) - const nonMvtSources: FeatureSource[] = [] + .map((l) => ThemeSourceCore.setupMvtSource(l, mapProperties, isDisplayed(l.id))) + const nonMvtSources: FeatureSource[] = [] const nonMvtLayers: LayerConfig[] = osmLayers.filter((l) => !mvtAvailableLayers.has(l.id)) - const osmApiSource = ThemeSourceCore.setupOsmApiSource( + const osmApiSource = ThemeSourceCore.setupOsmApiSource( osmLayers, bounds, zoom, @@ -145,14 +145,14 @@ class ThemeSourceCore extends FeatureSourceMerger { ) nonMvtSources.push(osmApiSource) - let overpassSource: OverpassFeatureSource = undefined + let overpassSource: OverpassFeatureSource = undefined if (nonMvtLayers.length > 0) { console.log( "Layers ", nonMvtLayers.map((l) => l.id), " cannot be fetched from the cache server, defaulting to overpass/OSM-api" ) - overpassSource = ThemeSourceCore.setupOverpass(osmLayers, bounds, zoom, featureSwitches) + overpassSource = ThemeSourceCore.setupOverpass(osmLayers, bounds, zoom, featureSwitches) nonMvtSources.push(overpassSource) } @@ -164,11 +164,11 @@ class ThemeSourceCore extends FeatureSourceMerger { overpassSource?.runningQuery?.addCallbackAndRun(() => setIsLoading()) osmApiSource?.isRunning?.addCallbackAndRun(() => setIsLoading()) - const geojsonSources: UpdatableFeatureSource[] = geojsonlayers.map((l) => + const geojsonSources: UpdatableFeatureSource[] = geojsonlayers.map((l) => ThemeSourceCore.setupGeojsonSource(l, mapProperties, isDisplayed(l.id)) ) - const downloadAll = new OverpassFeatureSource( + const downloadAll = new OverpassFeatureSource( { layers: layers.filter((l) => l.isNormal()), bounds: mapProperties.bounds, @@ -196,19 +196,19 @@ class ThemeSourceCore extends FeatureSourceMerger { this._mapBounds = mapProperties.bounds } - private static setupMvtSource( + private static setupMvtSource( layer: LayerConfig, mapProperties: { zoom: Store; bounds: Store }, isActive?: Store - ): UpdatableFeatureSource { - return new DynamicMvtileSource(layer, mapProperties, { isActive }) + ): UpdatableFeatureSource { + return new DynamicMvtileSource(layer, mapProperties, { isActive }) } - private static setupGeojsonSource( + private static setupGeojsonSource( layer: LayerConfig, mapProperties: { zoom: Store; bounds: Store }, isActiveByFilter?: Store - ): UpdatableFeatureSource { + ): UpdatableFeatureSource { const source = layer.source const isActive = mapProperties.zoom.map( (z) => (isActiveByFilter?.data ?? true) && z >= layer.minzoom, @@ -216,20 +216,20 @@ class ThemeSourceCore extends FeatureSourceMerger { ) if (source.geojsonZoomLevel === undefined) { // This is a 'load everything at once' geojson layer - return new GeoJsonSource(layer, { isActive }) + return new GeoJsonSource(layer, { isActive }) } else { - return new DynamicGeoJsonTileSource(layer, mapProperties, { isActive }) + return new DynamicGeoJsonTileSource(layer, mapProperties, { isActive }) } } - private static setupOsmApiSource( + private static setupOsmApiSource( osmLayers: LayerConfig[], bounds: Store, zoom: Store, backend: string, featureSwitches: FeatureSwitchState, fullNodeDatabase: FullNodeDatabaseSource - ): OsmFeatureSource | undefined { + ): OsmFeatureSource | undefined { if (osmLayers.length == 0) { return undefined } @@ -248,7 +248,7 @@ class ThemeSourceCore extends FeatureSourceMerger { if (typeof allowedFeatures === "boolean") { throw "Invalid filter to init OsmFeatureSource: it optimizes away to " + allowedFeatures } - return new OsmFeatureSource({ + return new OsmFeatureSource({ allowedFeatures, bounds, backend, @@ -258,12 +258,12 @@ class ThemeSourceCore extends FeatureSourceMerger { }) } - private static setupOverpass( + private static setupOverpass( osmLayers: LayerConfig[], bounds: Store, zoom: Store, featureSwitches: FeatureSwitchState - ): OverpassFeatureSource | undefined { + ): OverpassFeatureSource | undefined { if (osmLayers.length == 0) { return undefined } diff --git a/src/Logic/FeatureSource/TiledFeatureSource/DynamicGeoJsonTileSource.ts b/src/Logic/FeatureSource/TiledFeatureSource/DynamicGeoJsonTileSource.ts index 71a2edbcb..91504a441 100644 --- a/src/Logic/FeatureSource/TiledFeatureSource/DynamicGeoJsonTileSource.ts +++ b/src/Logic/FeatureSource/TiledFeatureSource/DynamicGeoJsonTileSource.ts @@ -4,8 +4,9 @@ import { Utils } from "../../../Utils" import GeoJsonSource from "../Sources/GeoJsonSource" import { BBox } from "../../BBox" import LayerConfig from "../../../Models/ThemeConfig/LayerConfig" +import { Feature, Geometry } from "geojson" -export default class DynamicGeoJsonTileSource extends UpdatableDynamicTileSource { +export default class DynamicGeoJsonTileSource & {id: string} > > extends UpdatableDynamicTileSource { private static whitelistCache = new Map>>() constructor( diff --git a/src/Logic/FeatureSource/TiledFeatureSource/DynamicMvtTileSource.ts b/src/Logic/FeatureSource/TiledFeatureSource/DynamicMvtTileSource.ts index 22b18b258..be79abc30 100644 --- a/src/Logic/FeatureSource/TiledFeatureSource/DynamicMvtTileSource.ts +++ b/src/Logic/FeatureSource/TiledFeatureSource/DynamicMvtTileSource.ts @@ -9,8 +9,10 @@ import Constants from "../../../Models/Constants" import { UpdatableFeatureSourceMerger } from "../Sources/FeatureSourceMerger" import { LineSourceMerger } from "./LineSourceMerger" import { PolygonSourceMerger } from "./PolygonSourceMerger" +import { OsmFeature, OsmTags } from "../../../Models/OsmFeature" +import { Feature, Point } from "geojson" -class PolygonMvtSource extends PolygonSourceMerger { +class PolygonMvtSource

& { id: string }> extends PolygonSourceMerger

{ constructor( layer: LayerConfig, mapProperties: { @@ -44,7 +46,7 @@ class PolygonMvtSource extends PolygonSourceMerger { } } -class LineMvtSource extends LineSourceMerger { +class LineMvtSource extends LineSourceMerger { constructor( layer: LayerConfig, mapProperties: { @@ -78,7 +80,7 @@ class LineMvtSource extends LineSourceMerger { } } -class PointMvtSource extends UpdatableDynamicTileSource { +class PointMvtSource> extends UpdatableDynamicTileSource { constructor( layer: LayerConfig, mapProperties: { @@ -102,7 +104,7 @@ class PointMvtSource extends UpdatableDynamicTileSource { layer: layer.id, type: "pois", }) - return new MvtSource(url, x, y, z) + return new MvtSource(url, x, y, z) }, mapProperties, { @@ -112,7 +114,7 @@ class PointMvtSource extends UpdatableDynamicTileSource { } } -export default class DynamicMvtileSource extends UpdatableFeatureSourceMerger { +export default class DynamicMvtileSource extends UpdatableFeatureSourceMerger { constructor( layer: LayerConfig, mapProperties: { @@ -124,9 +126,9 @@ export default class DynamicMvtileSource extends UpdatableFeatureSourceMerger { } ) { super( - new PointMvtSource(layer, mapProperties, options), - new LineMvtSource(layer, mapProperties, options), - new PolygonMvtSource(layer, mapProperties, options) + new PointMvtSource(layer, mapProperties, options), + new LineMvtSource(layer, mapProperties, options), + new PolygonMvtSource(layer, mapProperties, options), ) } } diff --git a/src/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts b/src/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts index 9578db09d..9369a67ca 100644 --- a/src/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts +++ b/src/Logic/FeatureSource/TiledFeatureSource/DynamicTileSource.ts @@ -3,14 +3,15 @@ import { Tiles } from "../../../Models/TileRange" import { BBox } from "../../BBox" import { FeatureSource, UpdatableFeatureSource } from "../FeatureSource" import FeatureSourceMerger from "../Sources/FeatureSourceMerger" +import { Feature, Geometry } from "geojson" /*** * A tiled source which dynamically loads the required tiles at a fixed zoom level. * A single featureSource will be initialized for every tile in view; which will later be merged into this featureSource */ -export default class DynamicTileSource< - Src extends FeatureSource = FeatureSource -> extends FeatureSourceMerger { +export default class DynamicTileSource = FeatureSource +> extends FeatureSourceMerger { private readonly loadedTiles = new Set() private readonly zDiff: number private readonly zoomlevel: Store @@ -97,9 +98,9 @@ export default class DynamicTileSource< } } -export class UpdatableDynamicTileSource - extends DynamicTileSource - implements UpdatableFeatureSource +export class UpdatableDynamicTileSource & {id: string}>, Src extends UpdatableFeatureSource = UpdatableFeatureSource> + extends DynamicTileSource + implements UpdatableFeatureSource { constructor( zoomlevel: Store, diff --git a/src/Logic/FeatureSource/TiledFeatureSource/LineSourceMerger.ts b/src/Logic/FeatureSource/TiledFeatureSource/LineSourceMerger.ts index 8290e70a3..f2d6a0aff 100644 --- a/src/Logic/FeatureSource/TiledFeatureSource/LineSourceMerger.ts +++ b/src/Logic/FeatureSource/TiledFeatureSource/LineSourceMerger.ts @@ -1,8 +1,7 @@ import { FeatureSourceForTile, UpdatableFeatureSource } from "../FeatureSource" import { Store } from "../../UIEventSource" import { BBox } from "../../BBox" -import { Utils } from "../../../Utils" -import { Feature, MultiLineString, Position } from "geojson" +import { Feature, LineString, MultiLineString, Position } from "geojson" import { GeoOperations } from "../../GeoOperations" import { UpdatableDynamicTileSource } from "./DynamicTileSource" import { Lists } from "../../../Utils/Lists" @@ -11,15 +10,16 @@ import { Lists } from "../../../Utils/Lists" * The PolygonSourceMerger receives various small pieces of bigger polygons and stitches them together. * This is used to reconstruct polygons of vector tiles */ -export class LineSourceMerger extends UpdatableDynamicTileSource< - FeatureSourceForTile & UpdatableFeatureSource +export class LineSourceMerger

& { id: string }> extends UpdatableDynamicTileSource< + Feature, FeatureSourceForTile> & UpdatableFeatureSource> > { private readonly _zoomlevel: Store constructor( zoomlevel: Store, minzoom: number, - constructSource: (tileIndex: number) => FeatureSourceForTile & UpdatableFeatureSource, + constructSource: (tileIndex: number) => FeatureSourceForTile< + Feature> & UpdatableFeatureSource>, mapProperties: { bounds: Store zoom: Store @@ -32,9 +32,9 @@ export class LineSourceMerger extends UpdatableDynamicTileSource< this._zoomlevel = zoomlevel } - protected addDataFromSources(sources: FeatureSourceForTile[]) { + protected addDataFromSources(sources: FeatureSourceForTile>[]) { sources = Lists.noNull(sources) - const all: Map> = new Map() + const all: Map> = new Map() const currentZoom = this._zoomlevel?.data ?? 0 for (const source of sources) { if (source.z != currentZoom) { @@ -48,10 +48,10 @@ export class LineSourceMerger extends UpdatableDynamicTileSource< } else if (f.geometry.type === "MultiLineString") { coordinates.push(...f.geometry.coordinates) } else { - console.error("Invalid geometry type:", f.geometry.type) + console.error("Invalid geometry type:", f.geometry["type"]) continue } - const oldV = all.get(id) + const oldV: Feature = all.get(id) if (!oldV) { all.set(id, { type: "Feature", @@ -63,7 +63,13 @@ export class LineSourceMerger extends UpdatableDynamicTileSource< }) continue } - oldV.geometry.coordinates.push(...coordinates) + for (const coordinate of coordinates) { + if (oldV.geometry.type === "LineString") { + oldV.geometry.coordinates.push(...coordinate) + } else { + oldV.geometry.coordinates.push(coordinate) + } + } } } diff --git a/src/Logic/FeatureSource/TiledFeatureSource/LocalStorageFeatureSource.ts b/src/Logic/FeatureSource/TiledFeatureSource/LocalStorageFeatureSource.ts index 5efb4c552..db0c4e04d 100644 --- a/src/Logic/FeatureSource/TiledFeatureSource/LocalStorageFeatureSource.ts +++ b/src/Logic/FeatureSource/TiledFeatureSource/LocalStorageFeatureSource.ts @@ -2,11 +2,11 @@ import DynamicTileSource from "./DynamicTileSource" import { ImmutableStore, Store } from "../../UIEventSource" import { BBox } from "../../BBox" import TileLocalStorage from "../Actors/TileLocalStorage" -import { Feature } from "geojson" +import { Feature, Geometry } from "geojson" import StaticFeatureSource from "../Sources/StaticFeatureSource" import LayerConfig from "../../../Models/ThemeConfig/LayerConfig" -export default class LocalStorageFeatureSource extends DynamicTileSource { +export default class LocalStorageFeatureSource> extends DynamicTileSource { constructor( backend: string, layer: LayerConfig, @@ -30,8 +30,8 @@ export default class LocalStorageFeatureSource extends DynamicTileSource { new ImmutableStore(zoomlevel), layer.minzoom, (tileIndex) => - new StaticFeatureSource( - storage.getTileSource(tileIndex).mapD((features) => { + new StaticFeatureSource( + > storage.getTileSource(tileIndex).mapD((features) => { if (features.length === undefined) { console.trace("These are not features:", features) storage.invalidate(tileIndex) diff --git a/src/Logic/FeatureSource/TiledFeatureSource/PolygonSourceMerger.ts b/src/Logic/FeatureSource/TiledFeatureSource/PolygonSourceMerger.ts index 37bda203e..3af4901ba 100644 --- a/src/Logic/FeatureSource/TiledFeatureSource/PolygonSourceMerger.ts +++ b/src/Logic/FeatureSource/TiledFeatureSource/PolygonSourceMerger.ts @@ -1,7 +1,7 @@ import { FeatureSourceForTile, UpdatableFeatureSource } from "../FeatureSource" import { Store } from "../../UIEventSource" import { BBox } from "../../BBox" -import { Feature } from "geojson" +import { Feature, Polygon } from "geojson" import { GeoOperations } from "../../GeoOperations" import { UpdatableDynamicTileSource } from "./DynamicTileSource" import { Lists } from "../../../Utils/Lists" @@ -10,13 +10,14 @@ import { Lists } from "../../../Utils/Lists" * The PolygonSourceMerger receives various small pieces of bigger polygons and stitches them together. * This is used to reconstruct polygons of vector tiles */ -export class PolygonSourceMerger extends UpdatableDynamicTileSource< - FeatureSourceForTile & UpdatableFeatureSource +export class PolygonSourceMerger

& { id: string }, + F extends Feature = Feature> extends UpdatableDynamicTileSource< + F, FeatureSourceForTile & UpdatableFeatureSource > { constructor( zoomlevel: Store, minzoom: number, - constructSource: (tileIndex: number) => FeatureSourceForTile & UpdatableFeatureSource, + constructSource: (tileIndex: number) => FeatureSourceForTile & UpdatableFeatureSource, mapProperties: { bounds: Store zoom: Store @@ -28,9 +29,9 @@ export class PolygonSourceMerger extends UpdatableDynamicTileSource< super(zoomlevel, minzoom, constructSource, mapProperties, options) } - protected addDataFromSources(sources: FeatureSourceForTile[]) { + protected addDataFromSources(sources: FeatureSourceForTile[]) { sources = Lists.noNull(sources) - const all: Map = new Map() + const all: Map = new Map() const zooms: Map = new Map() for (const source of sources) { @@ -60,7 +61,7 @@ export class PolygonSourceMerger extends UpdatableDynamicTileSource< zooms.set(id, z) continue } - const merged = GeoOperations.union(f, oldV) + const merged = GeoOperations.union(f, oldV) merged.properties = oldV.properties all.set(id, merged) zooms.set(id, z) diff --git a/src/Logic/GeoOperations.ts b/src/Logic/GeoOperations.ts index 571190fea..c7fdb66dc 100644 --- a/src/Logic/GeoOperations.ts +++ b/src/Logic/GeoOperations.ts @@ -15,7 +15,6 @@ import { import { Tiles } from "../Models/TileRange" import { Utils } from "../Utils" import { Lists } from "../Utils/Lists" - ;("use strict") export class GeoOperations { @@ -54,11 +53,11 @@ export class GeoOperations { /** * Create a union between two features */ - public static union( + public static union

( f0: Feature, f1: Feature - ): Feature | null { - return turf.union(turf.featureCollection([f0, f1])) + ): Feature | null { + return turf.union

(turf.featureCollection([f0, f1])) } public static intersect( diff --git a/src/Logic/ImageProviders/Panoramax.ts b/src/Logic/ImageProviders/Panoramax.ts index a1bea5f5a..362a4ab25 100644 --- a/src/Logic/ImageProviders/Panoramax.ts +++ b/src/Logic/ImageProviders/Panoramax.ts @@ -11,6 +11,9 @@ import { Feature, Point } from "geojson" import { AddImageOptions } from "panoramax-js/dist/Panoramax" import { ServerSourceInfo } from "../../Models/SourceOverview" import { ComponentType } from "svelte/types/runtime/internal/dev" +import { Strings } from "../../Utils/Strings" +import { Utils } from "../../Utils" +import { Lists } from "../../Utils/Lists" export default class PanoramaxImageProvider extends ImageProvider { public static readonly singleton: PanoramaxImageProvider = new PanoramaxImageProvider() @@ -194,9 +197,13 @@ export default class PanoramaxImageProvider extends ImageProvider { public async DownloadAttribution(providedImage: { id: string }): Promise { const meta = await this.getInfoFor(providedImage.id) + const artists = Lists.noEmpty(meta.data.providers.map(p => p.name)) + + // We take the last provider, as that one probably contain the username of the uploader + const artist = artists.at(-1) return { - artist: meta.data.providers.at(-1).name, // We take the last provider, as that one probably contain the username of the uploader + artist, date: new Date(meta.data.properties["datetime"]), licenseShortName: meta.data.properties["geovisio:license"], } diff --git a/src/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts b/src/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts index eba4275ec..227ecb043 100644 --- a/src/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts +++ b/src/Logic/Osm/Actions/CreateWayWithPointReuseAction.ts @@ -12,6 +12,7 @@ import CreateNewWayAction from "./CreateNewWayAction" import ThemeConfig from "../../../Models/ThemeConfig/ThemeConfig" import FullNodeDatabaseSource from "../../FeatureSource/TiledFeatureSource/FullNodeDatabaseSource" import { Position } from "geojson" +import type { OsmFeature } from "../../../Models/OsmFeature" export interface MergePointConfig { withinRangeOfM: number @@ -71,7 +72,7 @@ export default class CreateWayWithPointReuseAction private readonly _state: { theme: ThemeConfig changes: Changes - indexedFeatures: IndexedFeatureSource + indexedFeatures: IndexedFeatureSource fullNodeDatabase?: FullNodeDatabaseSource } private readonly _config: MergePointConfig[] @@ -82,7 +83,7 @@ export default class CreateWayWithPointReuseAction state: { theme: ThemeConfig changes: Changes - indexedFeatures: IndexedFeatureSource + indexedFeatures: IndexedFeatureSource fullNodeDatabase?: FullNodeDatabaseSource }, config: MergePointConfig[] @@ -199,7 +200,7 @@ export default class CreateWayWithPointReuseAction } features.push(newGeometry) } - return StaticFeatureSource.fromGeojson(features) + return new StaticFeatureSource(features) } public async CreateChangeDescriptions(changes: Changes): Promise { diff --git a/src/Logic/Osm/Actions/ReplaceGeometryAction.ts b/src/Logic/Osm/Actions/ReplaceGeometryAction.ts index 4888dc650..304e56190 100644 --- a/src/Logic/Osm/Actions/ReplaceGeometryAction.ts +++ b/src/Logic/Osm/Actions/ReplaceGeometryAction.ts @@ -14,6 +14,7 @@ import { OsmConnection } from "../OsmConnection" import { Feature, Geometry, LineString, Point } from "geojson" import FullNodeDatabaseSource from "../../FeatureSource/TiledFeatureSource/FullNodeDatabaseSource" import { Lists } from "../../../Utils/Lists" +import { OsmFeature } from "../../../Models/OsmFeature" export default class ReplaceGeometryAction extends OsmChangeAction implements PreviewableAction { /** @@ -90,13 +91,13 @@ export default class ReplaceGeometryAction extends OsmChangeAction implements Pr public async getPreview(): Promise { const { closestIds, allNodesById, detachedNodes, reprojectedNodes } = await this.GetClosestIds() - const preview: Feature[] = closestIds.map((newId, i) => { + const preview: Feature[] = closestIds.map((newId, i) => { if (this.identicalTo[i] !== undefined) { return undefined } if (newId === undefined) { - return { + return { type: "Feature", properties: { newpoint: "yes", @@ -127,7 +128,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction implements Pr reprojectedNodes.forEach(({ newLat, newLon, nodeId }) => { const origNode = allNodesById.get(nodeId) - const feature: Feature = { + const feature: Feature> = { type: "Feature", properties: { move: "yes", @@ -149,7 +150,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction implements Pr detachedNodes.forEach(({ reason }, id) => { const origNode = allNodesById.get(id) - const feature: Feature = { + const feature: OsmFeature & Feature = { type: "Feature", properties: { detach: "yes", @@ -165,7 +166,7 @@ export default class ReplaceGeometryAction extends OsmChangeAction implements Pr preview.push(feature) }) - return StaticFeatureSource.fromGeojson(Lists.noNull(preview)) + return new StaticFeatureSource(Lists.noNull(preview)) } /** diff --git a/src/Logic/Osm/OsmObject.ts b/src/Logic/Osm/OsmObject.ts index b85bc55b8..bd60a9a28 100644 --- a/src/Logic/Osm/OsmObject.ts +++ b/src/Logic/Osm/OsmObject.ts @@ -2,7 +2,7 @@ import { Utils } from "../../Utils" import polygon_features from "../../assets/polygon-features.json" import { OsmFeature, OsmId, OsmTags, WayId } from "../../Models/OsmFeature" import OsmToGeoJson from "osmtogeojson" -import { Feature, LineString, Polygon } from "geojson" +import { Feature, LineString, Point, Polygon } from "geojson" import Constants from "../../Models/Constants" export abstract class OsmObject { @@ -131,7 +131,7 @@ export abstract class OsmObject { */ public abstract centerpoint(): [number, number] - public abstract asGeoJson(): any + public abstract asGeoJson(): OsmFeature abstract SaveExtraData(element: any, allElements: OsmObject[] | any) @@ -228,7 +228,7 @@ ${tags} return [this.lat, this.lon] } - asGeoJson(): OsmFeature { + asGeoJson(): Feature { return { type: "Feature", properties: this.tags, @@ -305,7 +305,7 @@ ${nds}${tags} this.nodes = element.nodes } - public asGeoJson(): Feature & { properties: { id: WayId } } { + public asGeoJson(): Feature & { properties: { id: WayId } } { const coordinates: [number, number][] | [number, number][][] = this.coordinates.map( ([lat, lon]) => [lon, lat] ) @@ -384,7 +384,7 @@ ${members}${tags} this.geojson = geojson } - asGeoJson(): any { + asGeoJson(): OsmFeature { if (this.geojson !== undefined) { return this.geojson } diff --git a/src/Logic/Osm/Overpass.ts b/src/Logic/Osm/Overpass.ts index 7ec59a323..3c9edd61b 100644 --- a/src/Logic/Osm/Overpass.ts +++ b/src/Logic/Osm/Overpass.ts @@ -3,9 +3,9 @@ import { Utils } from "../../Utils" import { ImmutableStore, Store } from "../UIEventSource" import { BBox } from "../BBox" import osmtogeojson from "osmtogeojson" -import { FeatureCollection, Geometry } from "geojson" -import { OsmTags } from "../../Models/OsmFeature" -;("use strict") +import { Feature } from "geojson" + +("use strict") /** * Interfaces overpass to get all the latest data */ @@ -37,7 +37,7 @@ export class Overpass { this._includeMeta = includeMeta } - public async queryGeoJson(bounds: BBox): Promise<[FeatureCollection, Date]> { + public async queryGeoJson(bounds: BBox): Promise<[{features: T[]}, Date]> { const bbox = "[bbox:" + bounds.getSouth() + @@ -49,16 +49,16 @@ export class Overpass { bounds.getEast() + "]" const query = this.buildScript(bbox) - return await this.ExecuteQuery(query) + return await this.ExecuteQuery(query) } public buildUrl(query: string) { return `${this._interpreterUrl}?data=${encodeURIComponent(query)}` } - private async ExecuteQuery( + private async ExecuteQuery( query: string - ): Promise<[FeatureCollection, Date]> { + ): Promise<[{features: T[]}, Date]> { const json = await Utils.downloadJson<{ elements: [] remark @@ -73,7 +73,7 @@ export class Overpass { console.warn("No features for", this.buildUrl(query)) } - const geojson = >osmtogeojson(json) + const geojson = <{features: T[]}> osmtogeojson(json) const osmTime = new Date(json.osm3s.timestamp_osm_base) return [geojson, osmTime] } diff --git a/src/Logic/State/UserRelatedState.ts b/src/Logic/State/UserRelatedState.ts index 105c43f5c..fe78cab3d 100644 --- a/src/Logic/State/UserRelatedState.ts +++ b/src/Logic/State/UserRelatedState.ts @@ -678,7 +678,7 @@ export default class UserRelatedState { amendedPrefs.ping() }) - if(!Utils.runningFromConsole){ + if (!Utils.runningFromConsole) { amendedPrefs.data["___device_pixel_ratio"] = "" + window.devicePixelRatio } diff --git a/src/Logic/State/UserSettingsMetaTagging.ts b/src/Logic/State/UserSettingsMetaTagging.ts index 33a5ae85b..6e568c5c3 100644 --- a/src/Logic/State/UserSettingsMetaTagging.ts +++ b/src/Logic/State/UserSettingsMetaTagging.ts @@ -1,14 +1,42 @@ import { Utils } from "../../Utils" /** This code is autogenerated - do not edit. Edit ./assets/layers/usersettings/usersettings.json instead */ export class ThemeMetaTagging { - public static readonly themeName = "usersettings" + public static readonly themeName = "usersettings" - public metaTaggging_for_usersettings(feat: {properties: Record}) { - Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_md', () => feat.properties._description.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)?.at(1) ) - Utils.AddLazyProperty(feat.properties, '_d', () => feat.properties._description?.replace(/</g,'<')?.replace(/>/g,'>') ?? '' ) - Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_a', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.href.match(/mastodon|en.osm.town/) !== null)[0]?.href }) (feat) ) - Utils.AddLazyProperty(feat.properties, '_mastodon_link', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.getAttribute("rel")?.indexOf('me') >= 0)[0]?.href})(feat) ) - Utils.AddLazyProperty(feat.properties, '_mastodon_candidate', () => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a ) - feat.properties['__current_backgroun'] = 'initial_value' - } -} \ No newline at end of file + public metaTaggging_for_usersettings(feat: { properties: Record }) { + Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_md", () => + feat.properties._description + .match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/) + ?.at(1) + ) + Utils.AddLazyProperty( + feat.properties, + "_d", + () => feat.properties._description?.replace(/</g, "<")?.replace(/>/g, ">") ?? "" + ) + Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_a", () => + ((feat) => { + const e = document.createElement("div") + e.innerHTML = feat.properties._d + return Array.from(e.getElementsByTagName("a")).filter( + (a) => a.href.match(/mastodon|en.osm.town/) !== null + )[0]?.href + })(feat) + ) + Utils.AddLazyProperty(feat.properties, "_mastodon_link", () => + ((feat) => { + const e = document.createElement("div") + e.innerHTML = feat.properties._d + return Array.from(e.getElementsByTagName("a")).filter( + (a) => a.getAttribute("rel")?.indexOf("me") >= 0 + )[0]?.href + })(feat) + ) + Utils.AddLazyProperty( + feat.properties, + "_mastodon_candidate", + () => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a + ) + feat.properties["__current_backgroun"] = "initial_value" + } +} diff --git a/src/Logic/Web/ThemeViewStateHashActor.ts b/src/Logic/Web/ThemeViewStateHashActor.ts index e02f23d19..f90c433fa 100644 --- a/src/Logic/Web/ThemeViewStateHashActor.ts +++ b/src/Logic/Web/ThemeViewStateHashActor.ts @@ -4,13 +4,17 @@ import { AndroidPolyfill } from "./AndroidPolyfill" import { IndexedFeatureSource } from "../FeatureSource/FeatureSource" import { Feature } from "geojson" import { Store, UIEventSource } from "../UIEventSource" +import ThemeViewState from "../../Models/ThemeViewState" +import OsmObjectDownloader from "../Osm/OsmObjectDownloader" +import ThemeSource from "../FeatureSource/Sources/ThemeSource" export default class ThemeViewStateHashActor { - private readonly _state: { + private readonly _state: Readonly<{ indexedFeatures: IndexedFeatureSource selectedElement: UIEventSource guistate: MenuState - } + osmObjectDownloader: OsmObjectDownloader + }> private isUpdatingHash = false public static readonly documentation = [ @@ -35,12 +39,15 @@ export default class ThemeViewStateHashActor { * As such, we use a change in the hash to close the appropriate windows * */ - constructor(state: { - featureSwitches: { featureSwitchBackToThemeOverview: Store } - indexedFeatures: IndexedFeatureSource - selectedElement: UIEventSource - guistate: MenuState - }) { + constructor( + state: Readonly<{ + featureSwitches: { featureSwitchBackToThemeOverview: Store } + indexedFeatures: IndexedFeatureSource & ThemeSource + selectedElement: UIEventSource + guistate: MenuState + osmObjectDownloader: OsmObjectDownloader + }> + ) { this._state = state AndroidPolyfill.onBackButton(() => this.back(), { returnToIndex: state.featureSwitches.featureSwitchBackToThemeOverview, @@ -50,6 +57,20 @@ export default class ThemeViewStateHashActor { const containsMenu = this.loadStateFromHash(hashOnLoad) // First of all, try to recover the selected element if (!containsMenu && hashOnLoad?.length > 0) { + if ( + hashOnLoad.startsWith("node/") || + hashOnLoad.startsWith("way/") || + hashOnLoad.startsWith("relation/") + ) { + // This is an OSM-element. Let's download it and add it to the indexedFeatures + console.log("Directly downloading item from hash") + state.osmObjectDownloader.DownloadObjectAsync(hashOnLoad).then((osmObj) => { + if (osmObj === "deleted") { + return + } + state.indexedFeatures.addItem(osmObj.asGeoJson()) + }) + } state.indexedFeatures.featuresById.addCallbackAndRunD(() => { // once that we have found a matching element, we can be sure the indexedFeaturesource was popuplated and that the job is done return this.loadSelectedElementFromHash(hashOnLoad) diff --git a/src/Models/MenuState.ts b/src/Models/MenuState.ts index 98ec28ba8..788691713 100644 --- a/src/Models/MenuState.ts +++ b/src/Models/MenuState.ts @@ -91,10 +91,10 @@ export class MenuState { this.pageStates.about_theme.set(true) visitedBefore.set(true) this._selectedElement.addCallbackD(() => { - if(this.pageStates.about_theme.data){ + if (this.pageStates.about_theme.data) { this.pageStates.about_theme.set(false) - this._selectedElement.addCallbackAndRun(selected => { - if(!selected){ + this._selectedElement.addCallbackAndRun((selected) => { + if (!selected) { this.pageStates.about_theme.set(true) return true } diff --git a/src/Models/ThemeViewState/WithChangesState.ts b/src/Models/ThemeViewState/WithChangesState.ts index 27c2b85f1..e4f33a7b0 100644 --- a/src/Models/ThemeViewState/WithChangesState.ts +++ b/src/Models/ThemeViewState/WithChangesState.ts @@ -227,9 +227,9 @@ export class WithChangesState extends WithLayoutSourceState { metaTags: this.userRelatedState.preferencesAsTags, selectedElement: this.selectedElement, fetchStore: (id) => this.featureProperties.getStore(id), - onClick: feature => { + onClick: (feature) => { this.setSelectedElement(feature) - } + }, }) }) return filteringFeatureSource diff --git a/src/Models/ThemeViewState/WithImageState.ts b/src/Models/ThemeViewState/WithImageState.ts index 79a55aa8b..179baabcd 100644 --- a/src/Models/ThemeViewState/WithImageState.ts +++ b/src/Models/ThemeViewState/WithImageState.ts @@ -51,12 +51,7 @@ export class WithImageState extends WithGuiState implements SpecialVisualization * Setup various services for which no reference are needed */ private initActors() { - new ThemeViewStateHashActor({ - featureSwitches: this.featureSwitches, - selectedElement: this.selectedElement, - indexedFeatures: this.indexedFeatures, - guistate: this.guistate, - }) + new ThemeViewStateHashActor(this) new PendingChangesUploader(this.changes, this.selectedElement, this.imageUploadManager) } } diff --git a/src/Models/ThemeViewState/WithSpecialLayers.ts b/src/Models/ThemeViewState/WithSpecialLayers.ts index ff2bb58df..e1a5e163f 100644 --- a/src/Models/ThemeViewState/WithSpecialLayers.ts +++ b/src/Models/ThemeViewState/WithSpecialLayers.ts @@ -181,7 +181,9 @@ export class WithSpecialLayers extends WithChangesState { }) ) // show last click = new point/note marker - const features: StaticFeatureSource & {id: string}>> = new StaticFeatureSource(lastClickFiltered) + const features: StaticFeatureSource< + Feature & { id: string }> + > = new StaticFeatureSource(lastClickFiltered) this.featureProperties.trackFeatureSource(features) new ShowDataLayer(this.map, { features, diff --git a/src/UI/Base/BackButton.svelte b/src/UI/Base/BackButton.svelte index 5f48bf7e6..d58867ea1 100644 --- a/src/UI/Base/BackButton.svelte +++ b/src/UI/Base/BackButton.svelte @@ -15,7 +15,7 @@ dispatch("click")} - options={{ extraClasses: twMerge("flex items-center", clss) }} + options={{ extraClasses: twMerge("flex items-center justify-start", clss) }} > diff --git a/src/UI/Base/MapControlButton.svelte b/src/UI/Base/MapControlButton.svelte index 56f6a51d0..85c9c7dab 100644 --- a/src/UI/Base/MapControlButton.svelte +++ b/src/UI/Base/MapControlButton.svelte @@ -22,7 +22,7 @@ use:ariaLabelStore={arialabelString} disabled={!$enabled} class={twJoin( - "pointer-events-auto relative h-fit w-fit rounded-full", + "pointer-events-auto relative h-fit w-fit rounded-full border-gray-500", cls, $enabled ? "" : "disabled" )} diff --git a/src/UI/Base/Searchbar.svelte b/src/UI/Base/Searchbar.svelte index 738808da2..25879b7dc 100644 --- a/src/UI/Base/Searchbar.svelte +++ b/src/UI/Base/Searchbar.svelte @@ -44,7 +44,7 @@

dispatch("search")}>
@@ -9,7 +12,7 @@
-
+
diff --git a/src/UI/BigComponents/MenuDrawer.svelte b/src/UI/BigComponents/MenuDrawer.svelte index 07b266081..3e6134ecb 100644 --- a/src/UI/BigComponents/MenuDrawer.svelte +++ b/src/UI/BigComponents/MenuDrawer.svelte @@ -51,6 +51,8 @@ } }) let hotkeys = Hotkeys._docs + let showBackground = state.featureSwitches.featureSwitchBackgroundSelection + let showFilters = state.featureSwitches.featureSwitchFilter
@@ -75,10 +77,12 @@ - - - - + {#if $showFilters} + + {/if} + {#if $showBackground} + + {/if} diff --git a/src/UI/BigComponents/MenuDrawerIndex.svelte b/src/UI/BigComponents/MenuDrawerIndex.svelte index d33cc131a..cac998937 100644 --- a/src/UI/BigComponents/MenuDrawerIndex.svelte +++ b/src/UI/BigComponents/MenuDrawerIndex.svelte @@ -38,7 +38,7 @@ import SidebarUnit from "../Base/SidebarUnit.svelte" import Squares2x2 from "@babeard/svelte-heroicons/mini/Squares2x2" import EnvelopeOpen from "@babeard/svelte-heroicons/mini/EnvelopeOpen" - import { UIEventSource } from "../../Logic/UIEventSource" + import { ImmutableStore, UIEventSource } from "../../Logic/UIEventSource" import MagnifyingGlassCircle from "@babeard/svelte-heroicons/mini/MagnifyingGlassCircle" import { AndroidPolyfill } from "../../Logic/Web/AndroidPolyfill" import Forgejo from "../../assets/svg/Forgejo.svelte" @@ -74,7 +74,7 @@ let usersettingslayer = new LayerConfig(usersettings, "usersettings", true) let featureSwitches = state.featureSwitches - let showHome = featureSwitches?.featureSwitchBackToThemeOverview + let showHome = featureSwitches?.featureSwitchBackToThemeOverview ?? new ImmutableStore(true) let pg = state.guistate.pageStates export let onlyLink: boolean const t = Translations.t.general.menu @@ -101,8 +101,8 @@ {#if onlyLink} {/if} -
-

+
+

-
- - - - + {#if $showHome} + + + + + {/if} diff --git a/src/UI/BigComponents/OfflineManagement.svelte b/src/UI/BigComponents/OfflineManagement.svelte index ef5770ad9..21dc74914 100644 --- a/src/UI/BigComponents/OfflineManagement.svelte +++ b/src/UI/BigComponents/OfflineManagement.svelte @@ -20,6 +20,9 @@ import type { AreaDescription } from "../../Logic/OfflineBasemapManager" import { OfflineBasemapManager } from "../../Logic/OfflineBasemapManager" import Checkbox from "../Base/Checkbox.svelte" + import Translations from "../i18n/Translations" + import { default as Trans } from "../Base/Tr.svelte" + import AccordionSingle from "../Flowbite/AccordionSingle.svelte" export let state: ThemeViewState & SpecialVisualizationState = undefined export let autoDownload = state.autoDownloadOfflineBasemap @@ -147,25 +150,27 @@ ], }), }) + const t = Translations.t.offline -
+
- Automatically download the basemap when browsing around + -
- If checked, MapComplete will automatically download the basemap to the cache for the area. This - results in bigger initial data loads, but requires less internet over the long run. If you plan - to visit a region with less connectivity, you can also select the area you want to download - below. -
+ + +
+ +
+
+
{#if $installed === undefined} {:else} -
+
-
Map
+
@@ -176,7 +181,9 @@
{#if $focusTileIsInstalling}
- Data is being downloaded + + +
{:else} {/if}
@@ -193,8 +200,7 @@ -
Offline tile management
- +
{Utils.toHumanByteSize(Utils.sum($installed.map((area) => area.size)))} - - - - - + + + + + {#each $installed ?? [] as area} @@ -229,7 +245,7 @@ diff --git a/src/UI/BigComponents/SelectedElementTitle.svelte b/src/UI/BigComponents/SelectedElementTitle.svelte index e26c721a7..569a322b2 100644 --- a/src/UI/BigComponents/SelectedElementTitle.svelte +++ b/src/UI/BigComponents/SelectedElementTitle.svelte @@ -25,13 +25,13 @@
-
+
{#if $tags._deleted === "yes"}

{:else} -
+

@@ -40,6 +40,7 @@ {/if}

+ {#if layer.titleIcons.length > 0} + {/if}
{/if}
-
+
state.selectedElement.setData(undefined)} />
diff --git a/src/UI/BigComponents/WaySplitMap.svelte b/src/UI/BigComponents/WaySplitMap.svelte index 021e3cdb3..aa00d52f8 100644 --- a/src/UI/BigComponents/WaySplitMap.svelte +++ b/src/UI/BigComponents/WaySplitMap.svelte @@ -77,7 +77,7 @@ Feature< Point, { - id: number + id: string index: number dist: number location: number @@ -101,8 +101,9 @@ }) let id = 0 adaptor.lastClickLocation.addCallbackD(({ lon, lat }) => { - let projected: Feature = + let projected: Feature = ( GeoOperations.nearestPoint(wayGeojson, [lon, lat]) + ) console.log("Added splitpoint", projected, id) @@ -126,6 +127,7 @@ }, properties: { index: i + 1, + id: "" + id, reuse: "yes", }, } @@ -139,14 +141,14 @@ }, properties: { index: i, + id: "" + id, reuse: "yes", }, } } - projected.properties["id"] = id id++ - splitPoints.data.push(projected) + splitPoints.data.push(projected) splitPoints.ping() }) diff --git a/src/UI/Favourites/Favourites.svelte b/src/UI/Favourites/Favourites.svelte index 581a21aaa..2b1d08f13 100644 --- a/src/UI/Favourites/Favourites.svelte +++ b/src/UI/Favourites/Favourites.svelte @@ -40,11 +40,9 @@ -
- -
- - + + +
{#if $favourites.length === 0} diff --git a/src/UI/InputElement/Helpers/CollectionTimes/SingleCollectionTime.svelte b/src/UI/InputElement/Helpers/CollectionTimes/SingleCollectionTime.svelte index 55d228742..23ddf4515 100644 --- a/src/UI/InputElement/Helpers/CollectionTimes/SingleCollectionTime.svelte +++ b/src/UI/InputElement/Helpers/CollectionTimes/SingleCollectionTime.svelte @@ -8,6 +8,7 @@ import { OH } from "../../../OpeningHours/OpeningHours" import { Lists } from "../../../../Utils/Lists" import { Translation } from "../../../i18n/Translation" + import PlusCircle from "@babeard/svelte-heroicons/mini/PlusCircle" export let value: UIEventSource @@ -114,7 +115,7 @@ }} > - Add time +
diff --git a/src/UI/InputElement/Helpers/DistanceInput.svelte b/src/UI/InputElement/Helpers/DistanceInput.svelte index e501d210a..6aa03dc79 100644 --- a/src/UI/InputElement/Helpers/DistanceInput.svelte +++ b/src/UI/InputElement/Helpers/DistanceInput.svelte @@ -7,7 +7,7 @@ import { UIEventSource, Store } from "../../../Logic/UIEventSource" import type { MapProperties } from "../../../Models/MapProperties" import ThemeViewState from "../../../Models/ThemeViewState" - import type { Feature } from "geojson" + import type { Feature, LineString } from "geojson" import type { RasterLayerPolygon } from "../../../Models/RasterLayers" import { RasterLayerUtils } from "../../../Models/RasterLayers" import { eliCategory } from "../../../Models/RasterLayerProperties" @@ -22,13 +22,18 @@ import Tr from "../../Base/Tr.svelte" import { onDestroy } from "svelte" - export let value: UIEventSource + export let value: UIEventSource export let feature: Feature export let args: { background?: string; zoom?: number } export let state: ThemeViewState = undefined export let map: UIEventSource = new UIEventSource(undefined) let center = GeoOperations.centerpointCoordinates(feature) + if (feature.geometry.type === "LineString") { + center = <[number, number]>( + GeoOperations.nearestPoint(>feature, center).geometry.coordinates + ) + } export let initialCoordinate: { lon: number; lat: number } = { lon: center[0], lat: center[1] } let mapLocation: UIEventSource<{ lon: number; lat: number }> = new UIEventSource( initialCoordinate @@ -66,7 +71,7 @@ // A bit of a double task: calculate the actual value _and_ the map rendering const end = mapLocation.data const distance = GeoOperations.distanceBetween([start.lon, start.lat], [end.lon, end.lat]) - value.set(distance.toFixed(2)) + value.set(distance.toFixed(1)) return [ { @@ -93,6 +98,7 @@ layer: new LayerConfig(conflation), features: new StaticFeatureSource(lengthFeature), }) + const t = Translations.t.input_helpers.distance
@@ -102,6 +108,6 @@
- + diff --git a/src/UI/InputElement/Helpers/LocationInput.svelte b/src/UI/InputElement/Helpers/LocationInput.svelte index 8059cc633..7993e20c4 100644 --- a/src/UI/InputElement/Helpers/LocationInput.svelte +++ b/src/UI/InputElement/Helpers/LocationInput.svelte @@ -50,6 +50,7 @@ mla.lastClickLocation.addCallbackAndRunD((lastClick) => { dispatch("click", lastClick) }) + mla.installQuicklocation() mapProperties.location.syncWith(value) if (onCreated) { onCreated(value, map, mla) diff --git a/src/UI/InputElement/InputHelper.svelte b/src/UI/InputElement/InputHelper.svelte index 3239ac362..a272bbadc 100644 --- a/src/UI/InputElement/InputHelper.svelte +++ b/src/UI/InputElement/InputHelper.svelte @@ -5,7 +5,6 @@ import type { Feature } from "geojson" import type { SpecialVisualizationState } from "../SpecialVisualization" - import type { Validator } from "./Validator" import DistanceInput from "./Helpers/DistanceInput.svelte" export let type: ValidatorType @@ -14,11 +13,13 @@ export let args: (string | number | boolean)[] | any = undefined export let state: SpecialVisualizationState = undefined let validator = Validators.get(type) - let validatorHelper: Validator = validator.inputHelper + let validatorHelper = validator.inputHelper {#if type === "distance"} {:else if validatorHelper !== undefined} +{:else} + {/if} diff --git a/src/UI/InputElement/Validators.ts b/src/UI/InputElement/Validators.ts index a53a74f59..b2c7f4d6e 100644 --- a/src/UI/InputElement/Validators.ts +++ b/src/UI/InputElement/Validators.ts @@ -81,6 +81,7 @@ export default class Validators { new ColorValidator(), new DirectionValidator(), + new DistanceValidator(), new SlopeValidator(), new UrlValidator(), @@ -106,8 +107,6 @@ export default class Validators { new TagValidator(), new NameSuggestionIndexValidator(), - - new DistanceValidator(), ] private static _byType = Validators._byTypeConstructor() diff --git a/src/UI/Map/MapLibreAdaptor.ts b/src/UI/Map/MapLibreAdaptor.ts index 68ceba8ac..9d63dc237 100644 --- a/src/UI/Map/MapLibreAdaptor.ts +++ b/src/UI/Map/MapLibreAdaptor.ts @@ -757,4 +757,27 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { }) }) } + + /** + * In general, the 'location'-attribute is only updated when the map stops moving. + * In some cases, we'd like to update the map faster, especially when the map is used for an input-element + * such as distance, snap-to, ... + * + * In that case, calling this method will install an extra handler on 'drag', updating the location faster. + * To avoid rendering artefacts or too frequenting pinging, this is ratelimited to one update every 'rateLimitMs' milliseconds + */ + public installQuicklocation(ratelimitMs = 50) { + this._maplibreMap.addCallbackAndRunD((map) => { + let lastUpdate = new Date().getTime() + map.on("drag", (e) => { + let now = new Date().getTime() + if (now - lastUpdate < ratelimitMs) { + return + } + lastUpdate = now + const center = map.getCenter() + this.location.set({ lon: center.lng, lat: center.lat }) + }) + }) + } } diff --git a/src/UI/Map/PointRenderingLayer.ts b/src/UI/Map/PointRenderingLayer.ts index a0153389a..da2fdac74 100644 --- a/src/UI/Map/PointRenderingLayer.ts +++ b/src/UI/Map/PointRenderingLayer.ts @@ -231,7 +231,8 @@ export class PointRenderingLayer { let store: Store> if (this._fetchStore) { store = this._fetchStore(feature.properties.id) - } else { + } + if(!store){ store = new ImmutableStore(feature.properties) } const { html, iconAnchor } = this._config.RenderIcon(store, { metatags: this._metatags }) diff --git a/src/UI/Map/RasterLayerHandler.ts b/src/UI/Map/RasterLayerHandler.ts index a5dcc67ee..3ccc4a456 100644 --- a/src/UI/Map/RasterLayerHandler.ts +++ b/src/UI/Map/RasterLayerHandler.ts @@ -59,14 +59,14 @@ class SingleBackgroundHandler { return } - console.debug( - "Removing raster layer", - this._targetLayer.properties.id, - "map moved and not been used for", - SingleBackgroundHandler.DEACTIVATE_AFTER - ) try { if (map.getLayer(this._targetLayer.properties.id)) { + console.debug( + "Removing raster layer", + this._targetLayer.properties.id, + "map moved and not been used for", + SingleBackgroundHandler.DEACTIVATE_AFTER + ) map.removeLayer(this._targetLayer.properties.id) } } catch (e) { diff --git a/src/UI/Map/ShowDataLayer.ts b/src/UI/Map/ShowDataLayer.ts index 434e705fd..250956199 100644 --- a/src/UI/Map/ShowDataLayer.ts +++ b/src/UI/Map/ShowDataLayer.ts @@ -357,7 +357,7 @@ export default class ShowDataLayer { public static showMultipleLayers( mlmap: UIEventSource, - features: FeatureSource, + features: FeatureSource & {id: string}>>, layers: LayerConfig[], options?: Partial> ) { diff --git a/src/UI/Map/ShowDataLayerOptions.ts b/src/UI/Map/ShowDataLayerOptions.ts index 8894c61ac..443cedc48 100644 --- a/src/UI/Map/ShowDataLayerOptions.ts +++ b/src/UI/Map/ShowDataLayerOptions.ts @@ -7,7 +7,7 @@ export interface ShowDataLayerOptions { /** * Features to show */ - features: FeatureSource> + features: FeatureSource & { id: string }>> /** * Indication of the current selected element; overrides some filters. * When a feature is tapped, the feature will be put in there diff --git a/src/UI/Popup/AddNewPoint/CreateCopy.svelte b/src/UI/Popup/AddNewPoint/CreateCopy.svelte index ab5e4bcff..f24bff47d 100644 --- a/src/UI/Popup/AddNewPoint/CreateCopy.svelte +++ b/src/UI/Popup/AddNewPoint/CreateCopy.svelte @@ -17,8 +17,6 @@ import OpenBackgroundSelectorButton from "../../BigComponents/OpenBackgroundSelectorButton.svelte" import Tr from "../../Base/Tr.svelte" import ThemeViewState from "../../../Models/ThemeViewState" - import TagExplanation from "../TagExplanation.svelte" - import { And } from "../../../Logic/Tags/And" import Loading from "../../Base/Loading.svelte" import CreateNewNodeAction from "../../../Logic/Osm/Actions/CreateNewNodeAction" import DocumentDuplicate from "@babeard/svelte-heroicons/solid/DocumentDuplicate" @@ -26,6 +24,7 @@ import { EyeOffIcon } from "@rgossiaux/svelte-heroicons/solid" import Layers from "../../../assets/svg/Layers.svelte" import { onDestroy } from "svelte" + import TagHint from "../TagHint.svelte" export let state: ThemeViewState export let layer: LayerConfig @@ -180,7 +179,7 @@ {#if showTags}
- +
{/if} diff --git a/src/UI/Popup/AddNewPoint/PresetList.svelte b/src/UI/Popup/AddNewPoint/PresetList.svelte index 984372534..91f676209 100644 --- a/src/UI/Popup/AddNewPoint/PresetList.svelte +++ b/src/UI/Popup/AddNewPoint/PresetList.svelte @@ -100,9 +100,8 @@ }>() - +
- {#each presets as preset} dispatch("select", preset)}> preset.icon} /> diff --git a/src/UI/Popup/AutoApplyButton.svelte b/src/UI/Popup/AutoApplyButton.svelte index 6a0ba5791..5bf7cdc7d 100644 --- a/src/UI/Popup/AutoApplyButton.svelte +++ b/src/UI/Popup/AutoApplyButton.svelte @@ -1,7 +1,6 @@ {#if $languages.length === 1} @@ -30,9 +32,8 @@ {tags} {feature} {layer} - t={new TypedTranslation({ "*": single_render }).PartialSubsTr( - "language()", - new Translation(all_languages[$languages[0]], undefined) + t={new TypedTranslation({ "*": single_render }).PartialSubs( + {"language()": new Translation(all_languages[$languages[0]]).textFor($currentLanguage)} )} /> {:else} @@ -45,9 +46,8 @@ {tags} {feature} {layer} - t={new TypedTranslation({ "*": item_render }).PartialSubsTr( - "language()", - new Translation(all_languages[language], undefined) + t={new TypedTranslation({ "*": item_render }).PartialSubs( + {"language()": new Translation(all_languages[language]).textFor($currentLanguage)} )} /> diff --git a/src/UI/Popup/LanguageElement/LanguageElement.svelte b/src/UI/Popup/LanguageElement/LanguageElement.svelte index a013e245e..745ce5f45 100644 --- a/src/UI/Popup/LanguageElement/LanguageElement.svelte +++ b/src/UI/Popup/LanguageElement/LanguageElement.svelte @@ -42,7 +42,7 @@ {#if $foundLanguages.length === 0 && on_no_known_languages && !$forceInputMode}
-
+
{on_no_known_languages}
forceInputMode.setData(true)} /> diff --git a/src/UI/Popup/LanguageElement/LanguageElement.ts b/src/UI/Popup/LanguageElement/LanguageElement.ts index 4d95929e3..8b7156d4b 100644 --- a/src/UI/Popup/LanguageElement/LanguageElement.ts +++ b/src/UI/Popup/LanguageElement/LanguageElement.ts @@ -7,13 +7,19 @@ export class LanguageElement extends SpecialVisualizationSvelte { needsUrls = [] docs: string = - "The language element allows to show and pick all known (modern) languages. The key can be set" + "The language element allows to show and pick all known (modern) languages (includes sign languages). The key can be set" - args: { name: string; defaultValue?: string; doc: string; required?: boolean; type?: string }[] = [ + args: { + name: string + defaultValue?: string + doc: string + required?: boolean + type?: string + }[] = [ { name: "key", required: true, - type:"key", + type: "key", doc: "What key to use, e.g. `language`, `tactile_writing:braille:language`, ... If a language is supported, the language code will be appended to this key, resulting in `:nl=yes` if _nl_ is picked ", }, { @@ -61,17 +67,8 @@ export class LanguageElement extends SpecialVisualizationSvelte { \`\`\` ` - constr( - { - state, - tags, - args, - feature, - layer, - }: SpecialVisualisationParams, - ): SvelteUIElement { - let [key, question, item_render, single_render, all_render, on_no_known_languages] = - args + constr({ state, tags, args, feature, layer }: SpecialVisualisationParams): SvelteUIElement { + let [key, question, item_render, single_render, all_render, on_no_known_languages] = args if (item_render === undefined || item_render.trim() === "") { item_render = "{language()}" } diff --git a/src/UI/Popup/LanguageElement/LanguageOptions.svelte b/src/UI/Popup/LanguageElement/LanguageOptions.svelte index bfabc2b37..48724b51c 100644 --- a/src/UI/Popup/LanguageElement/LanguageOptions.svelte +++ b/src/UI/Popup/LanguageElement/LanguageOptions.svelte @@ -106,7 +106,7 @@
-
+
{#each knownLanguagecodes as lng} {#if isChecked[lng] && $newlyChecked.indexOf(lng) < 0 && probableLanguages.indexOf(lng) < 0}
diff --git a/src/UI/Popup/MinimapViz.svelte b/src/UI/Popup/MinimapViz.svelte index 25b95242f..8b6f8a500 100644 --- a/src/UI/Popup/MinimapViz.svelte +++ b/src/UI/Popup/MinimapViz.svelte @@ -45,13 +45,13 @@ console.warn("No feature found for id ", id) continue } - features.push(> feature) + features.push(>feature) } } return features }, [tags], - onDestroy, + onDestroy ) let mlmap = new UIEventSource(undefined) @@ -71,7 +71,7 @@ mlmap, new StaticFeatureSource(featuresToShow), state.theme.layers, - { zoomToFeatures: true }, + { zoomToFeatures: true } ) diff --git a/src/UI/Popup/MultiApplyViz.ts b/src/UI/Popup/MultiApplyViz.ts index a44ef8c24..6e8a0aac9 100644 --- a/src/UI/Popup/MultiApplyViz.ts +++ b/src/UI/Popup/MultiApplyViz.ts @@ -19,9 +19,7 @@ export class MultiApplyViz extends SpecialVisualizationSvelte { doc: "One key (or multiple keys, seperated by ';') of the attribute that should be copied onto the other features.", required: true, }, - { name: "text", - type: "translation", - doc: "The text to show on the button" }, + { name: "text", type: "translation", doc: "The text to show on the button" }, { name: "autoapply", doc: "A boolean indicating wether this tagging should be applied automatically if the relevant tags on this object are changed. A visual element indicating the multi_apply is still shown", diff --git a/src/UI/Popup/PlantNetDetectionViz.ts b/src/UI/Popup/PlantNetDetectionViz.ts index 1b2f2f697..fe8fe12de 100644 --- a/src/UI/Popup/PlantNetDetectionViz.ts +++ b/src/UI/Popup/PlantNetDetectionViz.ts @@ -31,7 +31,7 @@ export class PlantNetDetectionViz extends SpecialVisualizationSvelte { args = [ { name: "image_key", - type:"key", + type: "key", defaultValue: AllImageProviders.defaultKeys.join(","), doc: "The keys given to the images, e.g. if image is given, the first picture URL will be added as image, the second as image:0, the third as image:1, etc... Multiple values are allowed if ';'-separated ", }, diff --git a/src/UI/Popup/ShareLinkViz.ts b/src/UI/Popup/ShareLinkViz.ts index 15e602ec8..702659eef 100644 --- a/src/UI/Popup/ShareLinkViz.ts +++ b/src/UI/Popup/ShareLinkViz.ts @@ -16,17 +16,13 @@ export class ShareLinkViz extends SpecialVisualizationSvelte { }, { name: "text", - type:"translation", + type: "translation", doc: "The text to show on the button. If none is given, will act as a titleIcon", }, ] needsUrls = [] - public constr({ - state, - tags, - args}:SpecialVisualisationParams - ) { + public constr({ state, tags, args }: SpecialVisualisationParams) { const text = args[1] const generateShareData = () => { diff --git a/src/UI/Popup/TagExplanation.svelte b/src/UI/Popup/TagExplanation.svelte deleted file mode 100644 index bcacc0447..000000000 --- a/src/UI/Popup/TagExplanation.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -{#if tagsFilter !== undefined} - -{/if} diff --git a/src/UI/Popup/TagRendering/Questionbox.svelte b/src/UI/Popup/TagRendering/Questionbox.svelte index 48c44dfc1..d20e83870 100644 --- a/src/UI/Popup/TagRendering/Questionbox.svelte +++ b/src/UI/Popup/TagRendering/Questionbox.svelte @@ -15,6 +15,7 @@ import TagRenderingQuestionDynamic from "./TagRenderingQuestionDynamic.svelte" import LoginToggle from "../../Base/LoginToggle.svelte" import AccordionSingle from "../../Flowbite/AccordionSingle.svelte" + import { ChevronRightIcon } from "@rgossiaux/svelte-heroicons/solid" export let layer: LayerConfig export let tags: UIEventSource> @@ -180,7 +181,10 @@ }} slot="cancel" > +
+ + {/if} diff --git a/src/UI/Popup/TagRendering/SpecialTranslation.svelte b/src/UI/Popup/TagRendering/SpecialTranslation.svelte index 9686f3ff9..81aa54ce3 100644 --- a/src/UI/Popup/TagRendering/SpecialTranslation.svelte +++ b/src/UI/Popup/TagRendering/SpecialTranslation.svelte @@ -38,7 +38,7 @@ let key = "cached_special_spec_" + $language specs = t[key] if (specs === undefined) { - specs = SpecialVisualizations.constructSpecification(txt) + specs = SpecialVisualizations.constructSpecification(txt) ?? [] t[key] = specs } } @@ -51,7 +51,7 @@ { try { return specpart.func - .constr({state, tags, args : specpart.args, feature, layer}) + .constr({ state, tags, args: specpart.args, feature, layer }) ?.SetClass(specpart.style) } catch (e) { console.error( @@ -70,7 +70,9 @@ } -{#if lang === "*"} +{#if specs === undefined} + +{:else if lang === "*"} {#each specs as specpart} {#if typeof specpart === "string"} diff --git a/src/UI/Popup/TagRendering/TagRenderingEditable.svelte b/src/UI/Popup/TagRendering/TagRenderingEditable.svelte index 45d84ea9e..c0b16be48 100644 --- a/src/UI/Popup/TagRendering/TagRenderingEditable.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingEditable.svelte @@ -148,6 +148,6 @@ } .answer:has(.edit-button:hover) { - border: 1px solid var(--catch-detail-color-contrast); + border: 1px solid var(--interactive-contrast); } diff --git a/src/UI/Popup/TagRendering/TagRenderingMapping.svelte b/src/UI/Popup/TagRendering/TagRenderingMapping.svelte index 94f255758..44b99286f 100644 --- a/src/UI/Popup/TagRendering/TagRenderingMapping.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingMapping.svelte @@ -21,7 +21,7 @@ /** * Css classes to apply */ - export let clss: string = "ml-2" + export let clss: string = "" export let mapping: { readonly if?: TagsFilter readonly then: Translation diff --git a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte index dd15c7b86..70f7511f4 100644 --- a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte @@ -13,7 +13,6 @@ import SpecialTranslation from "./SpecialTranslation.svelte" import TagHint from "../TagHint.svelte" import LoginToggle from "../../Base/LoginToggle.svelte" - import SubtleButton from "../../Base/SubtleButton.svelte" import TagRenderingMappingInput from "./TagRenderingMappingInput.svelte" import { Translation } from "../../i18n/Translation" import { Unit } from "../../../Models/Unit" @@ -21,9 +20,8 @@ import { TagUtils } from "../../../Logic/Tags/TagUtils" import Search from "../../../assets/svg/Search.svelte" - import Login from "../../../assets/svg/Login.svelte" import { placeholder } from "../../../Utils/placeholder" - import { TrashIcon } from "@rgossiaux/svelte-heroicons/solid" + import { ChevronRightIcon, TrashIcon } from "@rgossiaux/svelte-heroicons/solid" import { Tag } from "../../../Logic/Tags/Tag" import { And } from "../../../Logic/Tags/And" import { get } from "svelte/store" @@ -36,6 +34,7 @@ import DotMenu from "../../Base/DotMenu.svelte" import SidebarUnit from "../../Base/SidebarUnit.svelte" import { Lists } from "../../../Utils/Lists" + import LoginButton from "../../Base/LoginButton.svelte" export let config: TagRenderingConfig export let tags: UIEventSource> @@ -360,7 +359,7 @@ {#if question !== undefined && $apiState !== "readonly" && $apiState !== "offline"}
{#if layer?.isNormal()} - + {#if $disabledInTheme.indexOf(config.id) >= 0} @@ -538,7 +537,7 @@
{/if} - +
{#if config.alwaysForceSaveButton} @@ -549,10 +548,9 @@
{:else} - state?.osmConnection?.AttemptLogin()}> - + - + {/if} {#if $feedback !== undefined} @@ -561,6 +559,7 @@ {/if} +

@@ -588,7 +587,7 @@ -
+
{#if $onMarkUnknown?.length > 0 && $isKnown && !matchesEmpty}
@@ -596,10 +595,11 @@ {/if}
- + + {#if config.freeform?.key && !checkedMappings?.some((m) => m) && !$freeformInput && !$freeformInputUnvalidated && $tags[config.freeform.key] && $isKnown} @@ -619,9 +619,11 @@ )} >
+ {/if} + diff --git a/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts b/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts index df7f1ac97..ef13828a3 100644 --- a/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts +++ b/src/UI/SpecialVisualisations/DataImportSpecialVisualisations.ts @@ -68,7 +68,7 @@ class MaprouletteSetStatusVis extends SpecialVisualizationSvelte { }, { name: "maproulette_id", - type:"key", + type: "key", doc: "The property name containing the maproulette id", defaultValue: "mr_taskId", }, @@ -111,7 +111,7 @@ class LinkedDataFromWebsite extends SpecialVisualization { { name: "key", defaultValue: "website", - type:"key", + type: "key", doc: "Attempt to load ld+json from the specified URL. This can be in an embedded -
+

Stylesheet testing grounds

This document exists to explore the style hierarchy. +
+

Normal background

There are a few styles, such as the normal-background -style which is used if there is nothing special going on. Some general information, with at most - a link to someplace -
Subtle
- -
Alert: something went wrong
-
Warning
-
Some important information
-
Thank you! Operation successful
- - Loading... - Dropdown: - - - - + +

Low interaction

@@ -38,77 +29,9 @@ areas, where some buttons might appear.

-
- Highly interactive area (mostly: active question) -
-
Subtle
- Dropdown: - - - - + -
- - - - - - - -
-
- - - -
- - -
- - - -
- -
Alert: something went wrong
-
Warning
-
Some important information
-
Thank you! Operation successful
- - - Loading...
@@ -117,64 +40,9 @@ There are interactive areas, where many buttons and input elements will appear.

-
Subtle
-
- - - -
+ -
- - -
-
Alert: something went wrong
-
Warning
-
Some important information
-
Thank you! Operation successful
- - - Loading... -
- - - -
- -
- Area with extreme high interactivity due to `border-interactive` -
- -
diff --git a/src/UI/StylesheetTestUnit.svelte b/src/UI/StylesheetTestUnit.svelte new file mode 100644 index 000000000..819d2bda4 --- /dev/null +++ b/src/UI/StylesheetTestUnit.svelte @@ -0,0 +1,76 @@ + a link to someplace +
Subtle
+
Alert: something went wrong
+
Warning
+
Thank you! Operation successful
+
+ Area with extreme high interactivity due to
border-interactive interactive
+
+ + Loading... + Dropdown: + + + +
+ + + + + + + +
+
+ + + +
+ + +
+ + + +
diff --git a/src/UI/ThemeViewGUI.svelte b/src/UI/ThemeViewGUI.svelte index 8431ad8d1..0169c7507 100644 --- a/src/UI/ThemeViewGUI.svelte +++ b/src/UI/ThemeViewGUI.svelte @@ -432,7 +432,9 @@ {/if} - +
+ +
diff --git a/src/Utils.ts b/src/Utils.ts index df6d99199..277a84844 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -291,7 +291,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be seen.add(ks) uniq.push(img) } - } else { + } else if (ks) { const ksNoNull = Lists.noNull(ks) const hasBeenSeen = ksNoNull.some((k) => seen.has(k)) if (!hasBeenSeen) { diff --git a/src/Utils/WikidataUtils.ts b/src/Utils/WikidataUtils.ts index 9b0f2e25e..ff13066c6 100644 --- a/src/Utils/WikidataUtils.ts +++ b/src/Utils/WikidataUtils.ts @@ -30,7 +30,11 @@ export default class WikidataUtils { { translations: Map; directionality?: string[] } >() for (const element of data) { - let id = element.code.value + let id = element.code?.value + if(!id){ + console.warn("No language code for", JSON.stringify(element),"ignoring") + continue + } id = remapLanguages[id] ?? id let labelLang = element.label["xml:lang"] labelLang = remapLanguages[labelLang] ?? labelLang diff --git a/src/assets/contributors.json b/src/assets/contributors.json index e3f7d45bd..3dda5a994 100644 --- a/src/assets/contributors.json +++ b/src/assets/contributors.json @@ -1,7 +1,7 @@ { "contributors": [ { - "commits": 10393, + "commits": 10439, "contributor": "Pieter Vander Vennet" }, { @@ -21,12 +21,12 @@ "contributor": "Win Olario" }, { - "commits": 35, - "contributor": "Hosted Weblate" + "commits": 36, + "contributor": "Osmwithspace" }, { - "commits": 34, - "contributor": "Osmwithspace" + "commits": 35, + "contributor": "Hosted Weblate" }, { "commits": 33, @@ -73,7 +73,7 @@ "contributor": "AlexanderRebai" }, { - "commits": 19, + "commits": 20, "contributor": "Niels Elgaard Larsen" }, { diff --git a/src/assets/language_native.json b/src/assets/language_native.json index 096f8ac6c..033f6d018 100644 --- a/src/assets/language_native.json +++ b/src/assets/language_native.json @@ -30,5 +30,2198 @@ "sv": "svenska", "uk": "українська мова", "zh_Hans": "简体中文", - "zh_Hant": "繁體中文" + "zh_Hant": "繁體中文", + "ржя": { + "af": "Russiese Gebaretaal", + "az": "rus jest dili", + "bn": "রুশ ইশারা ভাষা", + "ca": "llengua de signes russa", + "de": "russische Gebärdensprache", + "en": "Russian Sign Language", + "en-ca": "Russian Sign Language", + "en-gb": "Russian Sign Language", + "eo": "rusa signolingvo", + "es": "lengua de señas de Rusia", + "eu": "Errusiako keinu hizkuntza", + "fa": "زبان اشاره روسی", + "fi": "venäläinen viittomakieli", + "fr": "langue des signes russe", + "ga": "teanga chomharthaíochta na Rúise", + "he": "שפת הסימנים הרוסית", + "hi": "रूसी सांकेतिक भाषा", + "hy": "ռուսերեն ժեստերի լեզու", + "id": "Bahasa Isyarat Rusia", + "is": "rússneskt táknmál", + "it": "lingua dei segni russa", + "ja": "ロシア手話", + "lfn": "lingua de sinia rusce", + "lmo": "Lèngua d'i sègn rüssa", + "lv": "Krievu zīmju valoda", + "nap": "Lenguaggio d' 'e signe russa", + "nb_NO": "russisk tegnspråk", + "nl": "Russische gebarentaal", + "pa": "ਰੂਸ ਦੀ ਚਿੰਨ੍ਹ ਭਾਸ਼ਾ", + "pms": "Lenga dij segn d'El Salvador", + "pt": "Língua gestual russa", + "pt_BR": "Língua gestual russa", + "rm": "Lingua da segns russa", + "ru": "русский жестовый язык", + "sc": "Limba de sos Sinnos Russa", + "scn": "Lingua dî Signa Russa", + "sl": "ruski znakovni jezik", + "sv": "ryskt teckenspråk", + "tok": "toki luka Losi", + "tr": "Rus İşaret Dili", + "tt": "рус ишарә теле", + "uk": "російська жестова мова", + "vec": "łéngua dei segni rusa" + }, + "isl": { + "bn": "ভারতীয় ইশারা ভাষা", + "br": "yezh ar sinoù iwerzhonek", + "de": "Irische Gebärdensprache", + "en": "Indian Sign Language", + "en-gb": "Irish Sign Language", + "eo": "barata signolingvo", + "es": "lengua de señas india", + "eu": "Irlandako keinu hizkuntza", + "fa": "زبان اشاره ایرلندی", + "fr": "langue des signes indienne", + "ga": "teanga chomharthaíochta na hIndia", + "he": "שפת הסימנים ההודית", + "hi": "भारतीय सांकेतिक भाषा", + "hif": "Indian Sign Language", + "hy": "Իռլանդական ժեստերի լեզու", + "is": "írskt táknmál", + "it": "lingua dei segni indiana", + "ja": "インド手話", + "lfn": "lingua de sinia barati", + "nl": "Indiase Gebarentaal", + "pa": "ਭਾਰਤੀ ਇਸ਼ਾਰਾ", + "pms": "lenga dij segn indian-a", + "pnb": "بھارتی اشارہ", + "pt": "língua de sinais indiana", + "rm": "lingua da segns irlandaisa", + "ru": "ирландский жестовый язык", + "scn": "Lingua dî Signa Irlannisi", + "sl": "indijski znakovni jezik", + "sv": "Indiskt teckenspråk", + "tok": "toki luka Alan", + "tr": "Hint İşaret Dili", + "tt": "Ирландия ишарә теле", + "ur": "بھارتیہ سانکیتک بھاشا", + "vec": "łéngua dei segni indiana", + "vi": "Irish Sign Language", + "zh": "印度手语" + }, + "lsq": { + "bn": "কুইবেক ইশারা ভাষা", + "br": "yezh ar sinoù kwebekek", + "ca": "llengua de signes quebequesa", + "cy": "Iaith Arwyddo Québec", + "de": "Frankokanadische Gebärdensprache", + "eml": "Lèngva di sègn quebechéśa", + "en": "Quebec Sign Language", + "en-ca": "Quebec Sign Language", + "eo": "kebekia signolingvo", + "es": "lengua de señas quebequesa", + "fa": "زبان اشاره کبکی", + "fr": "langue des signes québécoise", + "ga": "teanga chomharthaíochta Québec", + "gl": "Lingua de signos quebechesa", + "ha": "Harshen Kurame na Quebec", + "hi": "क्यूबेक साइन लैंग्वेज", + "hif": "Quebec Sign Language", + "it": "lingua dei segni quebechese", + "ja": "ケベック手話", + "la": "lingua gesticulatoria Quebecensis", + "lfn": "lingua de sinia quebecan", + "pms": "Lenga dij segn dël Québec", + "pt": "língua de sinais quebequiana", + "pt_BR": "Língua de Sinais Quebequiana", + "ru": "квебекский жестовый язык", + "sc": "Limba de sos Sinnos Quebechesa", + "scn": "Lingua dî Signa Quebechisa", + "sco": "Quebecer Sign Leid", + "sl": "quebeški znakovni jezik", + "tr": "Québec İşaret Dili", + "vec": "Lengua de i segni quebechexe", + "yue": "魁北克手語" + }, + "rsl": { + "af": "Russiese Gebaretaal", + "az": "rus jest dili", + "bn": "রুশ ইশারা ভাষা", + "ca": "llengua de signes russa", + "de": "russische Gebärdensprache", + "en": "Russian Sign Language", + "en-ca": "Russian Sign Language", + "en-gb": "Russian Sign Language", + "eo": "rusa signolingvo", + "es": "lengua de señas de Rusia", + "eu": "Errusiako keinu hizkuntza", + "fa": "زبان اشاره روسی", + "fi": "venäläinen viittomakieli", + "fr": "langue des signes russe", + "ga": "teanga chomharthaíochta na Rúise", + "he": "שפת הסימנים הרוסית", + "hi": "रूसी सांकेतिक भाषा", + "hy": "ռուսերեն ժեստերի լեզու", + "id": "Bahasa Isyarat Rusia", + "is": "rússneskt táknmál", + "it": "lingua dei segni russa", + "ja": "ロシア手話", + "lfn": "lingua de sinia rusce", + "lmo": "Lèngua d'i sègn rüssa", + "lv": "Krievu zīmju valoda", + "nap": "Lenguaggio d' 'e signe russa", + "nb_NO": "russisk tegnspråk", + "nl": "Russische gebarentaal", + "pa": "ਰੂਸ ਦੀ ਚਿੰਨ੍ਹ ਭਾਸ਼ਾ", + "pms": "Lenga dij segn d'El Salvador", + "pt": "Língua gestual russa", + "pt_BR": "Língua gestual russa", + "rm": "Lingua da segns russa", + "ru": "русский жестовый язык", + "sc": "Limba de sos Sinnos Russa", + "scn": "Lingua dî Signa Russa", + "sl": "ruski znakovni jezik", + "sv": "ryskt teckenspråk", + "tok": "toki luka Losi", + "tr": "Rus İşaret Dili", + "tt": "рус ишарә теле", + "uk": "російська жестова мова", + "vec": "łéngua dei segni rusa" + }, + "asl": { + "ar": "لغة الإشارة الأمريكية", + "ase": "𝣷𝪜 𝤃𝪜 𝣜𝪜", + "ast": "llingua de señes americana", + "azb": "آمریکا ایشاره دیلی", + "be": "амслен", + "be-tarask": "амэрыканская жэставая мова", + "bn": "মার্কিন ইশারা ভাষা", + "br": "yezh ar sinoù amerikanek", + "ca": "llengua de signes americana", + "ckb": "زمانی نیشانەی ئەمریکی", + "co": "lingua di i cenni americana", + "cs": "americký znakový jazyk", + "cv": "Амслен", + "cy": "Iaith Arwyddo Americanaidd", + "da": "ASL", + "de": "American Sign Language", + "el": "Νοηματική Γλώσσα ΗΠΑ", + "eml": "lèngva di sègn americàna", + "en": "American Sign Language", + "en-ca": "American Sign Language", + "en-us": "American Sign Language", + "eo": "usona signolingvo", + "es": "lengua de señas estadounidense", + "eu": "amerikar keinu hizkuntza", + "fa": "زبان اشاره آمریکایی", + "fi": "amerikkalainen viittomakieli", + "fr": "langue des signes américaine", + "fur": "lenghe dai signse americane", + "ga": "Teanga Chomharthaíochta Mheiriceánach", + "gl": "lingua de signos americana", + "gv": "Çhengey Chowree Americaanagh", + "ha": "Harshen Kurame na Amurka", + "he": "שפת הסימנים האמריקאית", + "hi": "अमेरिकी सांकेतिक भाषा", + "hif": "American Sign Language", + "hr": "američki znakovni jezik", + "hu": "amerikai jelnyelv", + "hy": "ամերիկյան ժեստերի լեզու", + "id": "Bahasa Isyarat Amerika", + "is": "amerískt táknmál", + "it": "lingua dei segni americana", + "ja": "アメリカ手話", + "ko": "미국 수어", + "la": "lingua gesticulatoria Americana", + "lfn": "lingua de sinia american", + "lij": "Lengua di Segni American-a", + "lmo": "lèngua dei sègn americàna", + "lv": "Amerikāņu zīmju valoda", + "ms": "Abjad tangan Amerika Syarikat", + "mt": "lingwa tas-sinjali Amerikana", + "nap": "lenguaggio d' 'e signe mmerecana", + "nb_NO": "amerikansk tegnspråk", + "nl": "Amerikaanse Gebarentaal", + "pa": "ਅਮਰੀਕੀ ਚਿਹਨ ਭਾਸ਼ਾ", + "pl": "amerykański język migowy", + "pms": "lenga dij segn american-a", + "pt": "língua de sinais americana", + "pt_BR": "língua de sinais americana", + "rm": "lingua da segns americana", + "ro": "Limba Semnelor Americane", + "roa-tara": "lenghe de le signe americhene", + "ru": "амслен", + "sc": "limba de sos sinnos americana", + "scn": "Lingua dî Signa Miricana", + "sco": "American Sign Leid", + "sd": "ايَ ايس ايل", + "se": "amerihkalaš seavagiella", + "sl": "ameriški znakovni jezik", + "smn": "ameriklâš seevvimkielâ", + "sv": "amerikanskt teckenspråk", + "th": "ภาษามืออเมริกัน", + "tok": "toki luka Mewika", + "tr": "Amerikan İşaret Dili", + "uk": "Американська жестова мова", + "ur": "امریکی اشاراتی زبان", + "vec": "łéngua dei segni americana", + "vi": "Ngôn ngữ ký hiệu Mỹ", + "war": "Linggwahe hin Sinyales Amerikana", + "wuu": "美国手语", + "yue": "美國手語", + "zh": "美國手語", + "zh-tw": "美國手語", + "zh_Hant": "美國手語" + }, + "ksl": { + "anp": "कोरियाई सांकेतिक भाषा", + "az": "koreya işarə dili", + "bn": "কোরীয় ইশারা ভাষা", + "ca": "llengua de signes coreana", + "cy": "Iaith Arwyddo Coreeg", + "de": "Koreanische Gebärdensprache", + "en": "Kazakh-Russian Sign Language", + "en-gb": "Korean Sign Language", + "eo": "korea signolingvo", + "es": "lengua de señas coreana", + "eu": "korear keinu hizkuntza", + "fa": "زبان اشاره کرهای", + "fi": "korealainen viittomakieli", + "fr": "langue des signes kazakho-russe", + "ga": "teanga chomharthaíochta Chasacach-Rúiseach", + "gl": "lingua de sinais coreana", + "he": "שפת הסימנים הקוריאנית", + "hi": "कोरीआई इशारों की ज़ुबान", + "hy": "կորեերեն ժեստերի լեզու", + "id": "Bahasa Isyarat Korea", + "ig": "Asụsụ Ogbi nke Kazakh", + "it": "lingua dei segni coreana", + "ja": "韓国手話", + "kk-cyrl": "Қазақ-орыс ымдау тілі", + "ko": "한국 수어", + "la": "lingua gesticulatoria Coreana", + "lfn": "lingua de sinia hangugo", + "nl": "koreaanse gebarentaal", + "pa": "ਕੋਰੀਆਈ ਸੈਨਤ ਬੋਲੀ", + "pl": "Koreański język migowy", + "pms": "Lenga dij segn corean-a", + "pnb": "کوریائی سینت بولی", + "pt": "língua de sinais coreana", + "ru": "корейский жестовый язык", + "scn": "Lingua dî Signa Corèana", + "sd": "ڪوريائي سينت ٻولي", + "sk": "Kórejský posunkový jazyk", + "tok": "toki luka Anku", + "tr": "Kore İşaret Dili", + "tt": "кореяле ишарә теле", + "ur": "کوریائی اشاروں کی زبان", + "vi": "Ngôn ngữ ký hiệu Hàn Quốc", + "zh": "і哈萨克-俄罗斯手语", + "zh-cn": "韩国手语", + "zh_Hans": "韩文手语", + "zh_Hant": "韓國手語" + }, + "ai̇d": { + "az": "Azərbaycan işarət dili", + "bn": "আজারবাইজানি ইশারা ভাষা", + "bs": "Azerbejdžanski znakovni jezik", + "ca": "Llengua de signes àzeri", + "en": "Azerbaijani Sign Language", + "es": "Lengua de signos azerbaiyana", + "fa": "زبان اشاره آذربایجانی", + "fi": "azerbaidžanilainen viittomakieli", + "fr": "langue des signes azérie", + "ga": "teanga chomharthaíochta na hAsarbaiseáine", + "he": "שפת הסימנים האזרבייג'נית", + "hif": "Azerbaijani Sign bhasa", + "hr": "Azerski znakovni jezik", + "ig": "Asụsụ Ogbi nke Azerbaijani", + "ja": "アゼルバイジャン手話", + "lij": "lengua di segni azera", + "lmo": "Lèngua d'i sègn azera", + "nap": "Lenguaggio d' 'e signe azera", + "nb_NO": "Aserbajdsjansk tegnspråk", + "pms": "Lenga dij segn aser-a", + "pt": "Língua gestual azerbaijana", + "roa-tara": "Lenghe de le signe azere", + "ru": "азербайджанский жестовый язык", + "scn": "Lingua dî Signa Azzira", + "sh": "Azerski znakovni jezik", + "sr": "Азерски знаковни језик", + "tok": "toki luka Asepajan", + "tr": "Azerbaycan İşaret Dili", + "vec": "Łéngoa dei ségni azera" + }, + "azsl": { + "az": "Azərbaycan işarət dili", + "bn": "আজারবাইজানি ইশারা ভাষা", + "bs": "Azerbejdžanski znakovni jezik", + "ca": "Llengua de signes àzeri", + "en": "Azerbaijani Sign Language", + "es": "Lengua de signos azerbaiyana", + "fa": "زبان اشاره آذربایجانی", + "fi": "azerbaidžanilainen viittomakieli", + "fr": "langue des signes azérie", + "ga": "teanga chomharthaíochta na hAsarbaiseáine", + "he": "שפת הסימנים האזרבייג'נית", + "hif": "Azerbaijani Sign bhasa", + "hr": "Azerski znakovni jezik", + "ig": "Asụsụ Ogbi nke Azerbaijani", + "ja": "アゼルバイジャン手話", + "lij": "lengua di segni azera", + "lmo": "Lèngua d'i sègn azera", + "nap": "Lenguaggio d' 'e signe azera", + "nb_NO": "Aserbajdsjansk tegnspråk", + "pms": "Lenga dij segn aser-a", + "pt": "Língua gestual azerbaijana", + "roa-tara": "Lenghe de le signe azere", + "ru": "азербайджанский жестовый язык", + "scn": "Lingua dî Signa Azzira", + "sh": "Azerski znakovni jezik", + "sr": "Азерски знаковни језик", + "tok": "toki luka Asepajan", + "tr": "Azerbaycan İşaret Dili", + "vec": "Łéngoa dei ségni azera" + }, + "bsl": { + "ar": "لغة الإشارة البريطانية", + "ast": "llingua de señes británica", + "bn": "ব্রিটিশ ইশারা ভাষা", + "br": "yezh ar sinoù breizhveurek", + "ca": "llengau de signes britànica", + "co": "lingua di i cenni brettagnica", + "cs": "britský znakový jazyk", + "cy": "Iaith Arwyddion Prydain", + "da": "brittisk tegnsprog", + "de": "Britische Gebärdensprache", + "el": "Βρετανική Νοηματική Γλώσσα", + "eml": "lèngva di sègn britànica", + "en": "British Sign Language", + "en-gb": "British Sign Language", + "eo": "brita signolingvo", + "es": "lengua de señas británica", + "fa": "زبان اشاره انگلیسی", + "fi": "brittiläinen viittomakieli", + "fr": "langue des signes britannique", + "fur": "lenghe dai signse britaniche", + "ga": "Teanga Comhartha na Breataine", + "he": "שפת הסימנים הבריטית", + "hi": "ब्रिटिश सांकेतिक भाषा", + "hr": "britanski znakovni jezik", + "id": "Bahasa Isyarat Inggris", + "ig": "British Sign Language", + "is": "breskt táknmál", + "it": "lingua dei segni britannica", + "ja": "イギリス手話", + "ko": "영국 수화", + "la": "lingua gesticulatoria Britannica", + "lfn": "lingua de sinia brites", + "lij": "Lengua di Segni Britannega", + "lmo": "lèngua dei sègn britànica", + "ms": "Bahasa Isyarat British", + "mt": "Lingwa tas-Sinjali Brittanika", + "nap": "lenguaggio d' 'e signe ngrese", + "nb_NO": "britisk tegnspråk", + "nl": "Britse gebarentaal", + "nn": "britisk teiknspråk", + "pa": "ਬਰਤਾਨਵੀ ਚਿਹਨ ਬੋਲੀ", + "pl": "brytyjski język migowy", + "pms": "lenga dij segn britànica", + "pnb": "برطانوی سائین بولی", + "pt": "língua de sinais britânica", + "rm": "lingua da segns britannica", + "roa-tara": "lenghe de le signe bretagniche", + "ru": "британский жестовый язык", + "sc": "Limba de sos Sinnos Britànnica", + "scn": "Lingua dî Signa Ngrisi", + "sco": "Breetish Sign Leid", + "se": "brihttalaš seavagiella", + "skr": "برطانوی سائین بولی", + "sl": "britanski znakovni jezik", + "smn": "brittilâš seevvimkielâ", + "sv": "brittiskt teckenspråk", + "te": "బ్రిటిష్ సంకేత భాష", + "tok": "toki luka Juke", + "tr": "İngiliz İşaret Dili", + "uk": "британська жестова мова", + "ur": "برطانوی اشاروں کی زبان", + "vec": "łéngua dei segni britànega", + "vi": "Ngôn ngữ ký hiệu Anh", + "war": "Linggwahe hin Sinyales Ininglisa", + "yue": "英國手語", + "zh": "英國手語", + "zh_Hans": "英国手语", + "zh_Hant": "英國手語" + }, + "lsm": { + "ar": "لغة الإشارة المكسيكية", + "ast": "llingua de señes mexicana", + "bn": "মেক্সিকান ইশারা ভাষা", + "br": "yezh ar sinoù maltek", + "de": "Mexikanische Gebärdensprache", + "el": "Μαλτεζική Νοηματική Γλώσσα", + "en": "Mexican Sign Language", + "en-gb": "Mexican Sign Language", + "eo": "meksika signolingvo", + "es": "lengua de señas mexicana", + "fa": "زبان اشاره مکزیکی", + "fr": "langue des signes mexicaine", + "fur": "lenghe dai segns maltese", + "ga": "teanga chomharthaíochta Mheicsiceo", + "he": "שפת הסימנים המקסיקנית", + "hi": "मैक्सिकन सांकेतिक भाषा", + "hif": "Mexican Sign Language", + "it": "lingua dei segni maltese", + "ja": "メキシコ手話", + "lfn": "lingua de sinia mexican", + "mt": "Lingwa tas-Sinjali Maltija", + "nb_NO": "meksikansk tegnspråk", + "nl": "mexicaanse gebarentaal", + "pms": "lenga dij segn messican-a", + "pt": "língua de sinais mexicana", + "rm": "lingua da segns maltaisa", + "ru": "мальтийский язык жестов", + "scn": "Lingua dî Signa Mìssicana", + "sco": "Maltese Sign Leid", + "sl": "mehiški znakovni jezik", + "tok": "toki luka Mesiko", + "tr": "Meksika İşaret Dili", + "tt": "мальталы ишарә теле", + "zh-hk": "馬耳他手語", + "zh-tw": "馬爾他手語", + "zh_Hans": "墨西哥手语", + "zh_Hant": "墨西哥手語" + }, + "lsf": { + "ar": "لغة الإشارة الفرنسية", + "ast": "llingua de señes francesa", + "be-tarask": "француская жэставая мова", + "bn": "ফরাসি ইশারা ভাষা", + "br": "yezh ar Sinoù Gallek", + "ca": "llengua de signes francesa", + "co": "Lingua di i cenni francese", + "cy": "Iaith Arwyddo Ffrangeg", + "da": "fransk tegnsprog", + "de": "Langue des signes française", + "eml": "Lèngva di sègn francéśa", + "en": "French Sign Language", + "en-gb": "French Sign Language", + "eo": "franca signolingvo", + "es": "lengua de señas francesa", + "eu": "frantziako keinu hizkuntza", + "fa": "زبان اشاره فرانسوی", + "fi": "ranskalainen viittomakieli", + "fr": "langue des signes française", + "fur": "Lenghe dai segns francese", + "ga": "teanga chomharthaíochta na Fraince", + "gl": "Lingua de signos francesa", + "ha": "Harshen Kurame na Faransanci", + "he": "שפת הסימנים הצרפתית", + "hi": "फ्रेंच साइन लैंग्वेज", + "hif": "French Sign bhasa", + "hy": "Ֆրանսիական ժեստերի լեզու", + "id": "Bahasa Isyarat Prancis", + "is": "Franskt táknmál", + "it": "lingua dei segni francese", + "ja": "フランス手話", + "ko": "프랑스 수화", + "la": "lingua gesticulatoria Gallica", + "lfn": "lingua de sinia franses", + "lij": "Lengua di Segni Françeise", + "lmo": "Lèngua dei sègn franséza", + "ms": "Bahasa Isyarat Perancis", + "ms-arab": "بهاس اشارت ڤرنچيس", + "mt": "lingwa tas-sinjali Franċiża", + "nap": "Lenguaggio d' 'e signe franzese", + "nl": "Franse gebarentaal", + "nn": "Fransk teiknspråk", + "oc": "Lenga dels signes francesa", + "pa": "ਫਰਾਂਸੀਸੀ ਚਿਹਨ ਭਾਸ਼ਾ", + "pl": "Francuski Język Migowy", + "pms": "Lenga dij segn fransèisa", + "pt": "língua de sinais francesa", + "rm": "Lingua da segns franzosa", + "ro": "Alfabetul manual francez", + "roa-tara": "Lenghe de le signe frangese", + "ru": "французский жестовый язык", + "sc": "Limba de sos Sinnos Frantzesa", + "scn": "Lingua dî Signa Francisi", + "sco": "French Sign Leid", + "sl": "francoski znakovni jezik", + "sr": "француски знаковни језик", + "sv": "franskt teckenspråk", + "te": "ఫ్రెంచ్ సంకేత భాష", + "tok": "toki luka Kanse", + "tr": "Fransız İşaret Dili", + "uk": "французька мова жестів", + "ur": "اشاراتی فرانسیسی زبان", + "vec": "Lengua de i segni fransexe", + "war": "Linggwahe hin Sinyales Frinanses", + "yue": "法國手語", + "zh": "法语手语", + "zh-cn": "法国手语", + "zh_Hans": "法国手语", + "zh_Hant": "法國手語" + }, + "bim": { + "bn": "মালয়েশীয় ইশারা ভাষা", + "de": "Malaiische Gebärdensprache", + "en": "Malaysian Sign Language", + "en-ca": "Malaysian Sign Language", + "en-gb": "Malaysian Sign Language", + "eo": "malajzia signolingvo", + "fa": "زبان اشاره مالزیایی", + "fr": "langue des signes malaisienne", + "ga": "teanga chomharthaíochta na Malaeisia", + "gl": "Lingua de sinais malaisia", + "hi": "मलेशियाई सांकेतिक भाषा", + "id": "Bahasa Isyarat Malaysia", + "ig": "Asụsụ Ogbi nke Malaysia", + "it": "lingua dei segni malesiana", + "ja": "マレーシア手話", + "lfn": "lingua de sinia malaisian", + "ms": "Bahasa Isyarat Malaysia", + "nl": "Maleise gebarentaal", + "pms": "Lenga dij segn malesian-a", + "pt": "Língua de sinais malasiana", + "pt_BR": "Língua de sinais malasiana", + "ru": "малайский жестовый язык", + "sl": "malezijski znakovni jezik", + "th": "ภาษาสัญลักษณ์มาเลเซีย", + "tok": "toki luka Malasija", + "tr": "Malezya İşaret Dili", + "tt": "малай ишарә теле", + "zh": "马来西亚手语" + }, + "mvsl": { + "de": "Maledivische Gebärdensprachedie", + "dv": "ދިވެހި އިޝާރާތް ބަހުގެ", + "en": "Maldives Sign Language", + "ga": "teanga chomharthaíochta Oileáin Mhaildíve", + "pl": "Malediwski język migowy", + "ru": "мальдивский язык жестов", + "so": "Luuqadda Calaamadaha ee Maldives", + "tr": "Maldivler İşaret Dili" + }, + "lsmy": { + "ast": "llingua de señes yucateca", + "bn": "মায়া ইশারা ভাষা", + "de": "Maya-Gebärdensprache", + "en": "Yucatec Maya Sign Language", + "en-gb": "Yucatec Maya Sign Language", + "es": "lengua de señas maya yucateca", + "fa": "زبان اشاره مایایی", + "fi": "jukatekin viittomakieli", + "fr": "langue des signes maya yucatèque", + "ga": "teanga chomharthaíochta Mháigheach", + "ha": "Harshen Kurame na Maya", + "hi": "मय साइन लैंग्वेज", + "ig": "Yucatec Maya Sign Language", + "ja": "ユカテク・マヤ手話", + "pms": "lenga dij segn yucatec maya", + "pt": "línguas gestuais maias", + "sl": "majevski znakovni jezik", + "tr": "Yucatec Maya İşaret Dili" + }, + "lse": { + "ar": "لغة إشارة الإسبانية", + "ast": "llingua de señes española", + "bn": "স্পেনীয় ইশারা ভাষা", + "br": "yezh ar sinoù spagnolek", + "ca": "llengua de signes espanyola", + "co": "lingua di i cenni spagnola", + "de": "Spanische Gebärdensprache", + "en": "Spanish Sign Language", + "en-gb": "Spanish Sign Language", + "eo": "hispana signolingvo", + "es": "lengua de signos española", + "eu": "Espainiako keinu hizkuntza", + "fa": "زبان اشاره اسپانیایی", + "fi": "espanjalainen viittomakieli", + "fr": "langue des signes espagnole", + "ga": "teanga chomharthaíochta na Spáinne", + "gl": "Lingua de sinais española", + "he": "שפת הסימנים הספרדית", + "hi": "स्पेनिश सांकेतिक भाषा", + "hif": "Spanish Sign Language", + "id": "Bahasa Isyarat Spanyol", + "it": "lingua dei segni spagnola", + "ja": "スペイン手話", + "ko": "스페인어 수화", + "ku": "zimanê hêmayan ê spanî", + "ku-latn": "zimanê hêmayan ê spanî", + "la": "lingua gesticulatoria Hispanica", + "lfn": "lingua de sinia espaniol", + "nap": "Lenguaggio d' 'e signe spagnuola", + "nl": "Spaanse gebarentaal", + "oc": "lenga dels signes espanhòla", + "pms": "Lenga dij segn spagneula", + "sc": "limba de sos sinnos ispagnola", + "scn": "Lingua dî Signa Spagnula", + "sco": "Spainish Sign Leid", + "sl": "španski znakovni jezik", + "sw": "Lugha ya ishara ya Uhispania", + "tl": "Wikang pasenyas ng mga Kastila", + "tok": "toki luka Epanja", + "tr": "İspanyol İşaret Dili", + "tt": "испан ишарә теле", + "vec": "łéngua dei segni spagnola", + "war": "Linggwahe hin Sinyales Kinatsila", + "zh_Hans": "西班牙手语", + "zh_Hant": "西班牙手語" + }, + "lsu": { + "ast": "llingua de señes uruguaya", + "ca": "llengua de signes uruguaiana", + "de": "Uruguayische Gebärdensprache", + "en": "Uruguayan Sign Language", + "en-gb": "Uruguayan Sign Language", + "eo": "urugvaja signolingvo", + "es": "lengua de señas uruguaya", + "fa": "زبان اشاره اوروگوئهای", + "fi": "uruguaylainen viittomakieli", + "fr": "langue des signes uruguayenne", + "ga": "teanga chomharthaíochta Uragua", + "ja": "ウルグアイ手話", + "lfn": "lingua de sinia uruguaia", + "pms": "lenga dij segn uruguaian-a", + "pt": "Língua de Sinais do Uruguai", + "scn": "Lingua dî Signa Uruguai", + "sl": "urugvajski znakovni jezik", + "tok": "toki luka Ulukawi", + "tr": "Uruguay İşaret Dili", + "tt": "уругвайлы ишарә теле" + }, + "tsl": { + "bn": "তানজানীয় সাংকেতিক ভাষাসমূহ", + "ca": "llengua de signes taiwanesa", + "cs": "tchajwanský znakový jazyk", + "de": "Thailändische Gebärdensprache", + "en": "Thai Sign Language", + "en-gb": "Thai Sign Language", + "eo": "taja signolingvo", + "es": "lengua de señas taiwanesa", + "fa": "زبان اشاره تایلندی", + "fi": "taiwanilainen viittomakieli", + "fr": "langue des signes tanzanienne", + "ga": "teanga chomharthaíochta na Téalainne", + "he": "שפת הסימנים התאילנדית", + "hi": "थाई सांकेतिक भाषा", + "hif": "Thae Sign Language", + "id": "Bahasa Isyarat Thai", + "ig": "Asụsụ Ndị Ogbi Tanzania", + "ja": "タンザニア手話", + "ko": "대만 수화", + "lfn": "lingua de sinia tanzanian", + "lmo": "Lèngua d'i sègn d'la Thailandia", + "mt": "Lingwa tas-Sinjali Tajlandiża", + "nan": "Tâi-oân Chhiú-gí", + "nl": "Tanziaanse gebarentaal", + "oc": "lenga dels signes taiwanesa", + "pms": "Lenga dij segn tanzanian-a", + "pt": "Língua de Sinais da Tanzânia", + "ru": "тайваньский жестовый язык", + "sc": "Limba de sos Sinnos Thailandesa", + "scn": "Lingua dî Signa Tanzania", + "sk": "Taiwanský posunkový jazyk", + "sw": "Lugha ya Alama Tanzania", + "th": "ภาษามือไทย", + "tok": "toki luka Tansanija", + "tr": "Tanzanya İşaret Dili", + "tt": "Танзания ишарә теле", + "vi": "Ngôn ngữ ký hiệu Đài Loan", + "yue": "臺灣手語", + "zh": "泰國手語", + "zh-tw": "臺灣手語", + "zh_Hans": "台湾手语", + "zh_Hant": "臺灣手語" + }, + "ymsl": { + "ast": "llingua de señes yucateca", + "bn": "মায়া ইশারা ভাষা", + "de": "Maya-Gebärdensprache", + "en": "Yucatec Maya Sign Language", + "en-gb": "Yucatec Maya Sign Language", + "es": "lengua de señas maya yucateca", + "fa": "زبان اشاره مایایی", + "fi": "jukatekin viittomakieli", + "fr": "langue des signes maya yucatèque", + "ga": "teanga chomharthaíochta Mháigheach", + "ha": "Harshen Kurame na Maya", + "hi": "मय साइन लैंग्वेज", + "ig": "Yucatec Maya Sign Language", + "ja": "ユカテク・マヤ手話", + "pms": "lenga dij segn yucatec maya", + "pt": "línguas gestuais maias", + "sl": "majevski znakovni jezik", + "tr": "Yucatec Maya İşaret Dili" + }, + "is": { + "ar": "الإشارة الدولية", + "ast": "llingua internacional de señes", + "bg": "Жестуно", + "bn": "আন্তর্জাতিক ইশারা ভাষা", + "cs": "Mezinárodní znakový systém", + "de": "International Sign", + "en": "International Sign", + "en-gb": "International Sign", + "eo": "Gestuno", + "es": "lengua internacional de signos", + "eu": "gestuno", + "fa": "زبان اشاره بینالمللی", + "fi": "gestuno", + "fr": "langue des signes internationale", + "ga": "an Teanga Chomharthaíochta Idirnáisiúnta", + "he": "שפת הסימנים הבינלאומית", + "hu": "gestuno", + "id": "Isyarat Internasional", + "ig": "Ihe ịrịba ama mba ụwa", + "it": "lingua dei segni internazionale", + "ja": "国際手話", + "mt": "lingwa tas-sinjali internazzjonali", + "nap": "Lenguaggio d\"e signe nternazziunale", + "nl": "Gestuno", + "nov": "Gestuno", + "pl": "język gestuno", + "pt": "Gestuno", + "ru": "джестуно", + "scn": "Lingua dî Signa Ntinnazziunali", + "sl": "mednarodni znakovni jezik", + "tok": "toki luka pi ma ale", + "uk": "міжнародний жест", + "vec": "łéngua dei segni internasionałe", + "zh": "國際手語" + }, + "dgs": { + "ar": "لغة الإشارة الألمانية", + "bn": "জার্মান ইশারা ভাষা", + "br": "yezh ar sinoù alamanek", + "ca": "llengua de signes alemanya", + "co": "Lingua di i cenni tedesca", + "cy": "Iaith Arwyddo Almaeneg", + "da": "Tysk tegnsprog", + "de": "Deutsche Gebärdensprache", + "eml": "Lèngva di sègn tedèsca", + "en": "German Sign Language", + "en-gb": "German Sign Language", + "eo": "germana signolingvo", + "es": "lengua de señas alemana", + "et": "Saksa viipekeel", + "fa": "زبان اشاره آلمانی", + "fi": "saksalainen viittomakieli", + "fr": "langue des signes allemande - DGS", + "fur": "Lenghe dai segns todescje", + "ga": "teanga chomharthaíochta na Gearmáine", + "gl": "lingua de sinais alemá", + "he": "שפת הסימנים הגרמנית", + "hu": "német jelnyelv", + "id": "Bahasa Isyarat Jerman", + "is": "þýskt táknmál", + "it": "lingua dei segni tedesca", + "ja": "ドイツ手話", + "ko": "독일 수화", + "la": "lingua gesticulatoria Theodisca", + "lfn": "lingua de sinia deutx", + "lij": "Lengua di Segni Todesca", + "lmo": "Lèngua dei sègn todèsca", + "mk": "германски знаковен јазик", + "ms": "Bahasa Isyarat Jerman", + "mt": "lingwa tas-sinjali Ġermaniża", + "nap": "Lenguaggio d' 'e signe turesca", + "nb_NO": "tysk tegnspråk", + "nl": "Duitse gebarentaal", + "oc": "Lenga dels signes alemanda", + "pa": "ਜਰਮਨ ਸੈਨਤ ਬੋਲੀ", + "pl": "niemiecki język migowy", + "pms": "Lenga dij segn tedesca", + "pnb": "جرمن سیںت بولی", + "pt": "língua gestual alemã", + "pt_BR": "língua de sinais alemã", + "rm": "Lingua da segns tudestga", + "roa-tara": "Lenghe de le signe tedesche", + "ru": "германский жестовый язык", + "sc": "Limba de sos Sinnos Tedesca", + "scn": "Lingua dî Signa Tidesca", + "sco": "German Sign Leid", + "sl": "nemški znakovni jezik", + "sr": "немачки знаковни језик", + "sv": "tyskt teckenspråk", + "tok": "toki luka Tosi", + "tr": "Alman İşaret Dili", + "tt": "Германия ишарә теле", + "uk": "німецька мова жестів", + "vec": "Lengua de i segni todesca", + "vi": "Ngôn ngữ ký hiệu Đức", + "war": "Linggwahe hin Sinyales Inaleman", + "zh": "德国手语", + "zh_Hans": "德国手语", + "zh_Hant": "德國手語" + }, + "ögs": { + "ar": "لغة الإشارة النمساوية", + "ary": "لغة لإشارة د النمسا", + "ast": "llingua austriaca de señes", + "be-tarask": "аўстрыйская мова жэстаў", + "bn": "অস্ট্রীয় ইশারা ভাষা", + "ca": "llengua de signes austríaca", + "cy": "Iaith Arwyddo Awstria", + "de": "Österreichische Gebärdensprache", + "en": "Austrian Sign Language", + "en-gb": "Austrian Sign Language", + "eo": "aŭstra signolingvo", + "es": "lengua austríaca de signos", + "fa": "زبان اشاره اتریشی", + "fr": "langue des signes autrichienne", + "ga": "teanga chomharthaíochta na hOstaire", + "he": "שפת הסימנים האוסטרית", + "hr": "austrijski znakovni jezik", + "hu": "osztrák jelnyelv", + "ja": "オーストリア手話", + "ko": "오스트리아 수어", + "la": "lingua gesticulatoria Austriaca", + "lfn": "lingua de sinia osteraices", + "nb_NO": "østerriksk tegnspråk", + "nl": "oostenrijkse gebarentaal", + "pl": "austriacki język migowy", + "pms": "Lenga dij segn austrìaca", + "pt": "língua de sinais austríaca", + "rm": "Lingua da segns austriaca", + "roa-tara": "Lenghe de le signe austrieche", + "ru": "австрийский жестовый язык", + "scn": "Lingua dî Signa Austriaca", + "sco": "Austrick Sign Leid", + "sk": "Rakúsky posunkový jazyk", + "sl": "avstrijski znakovni jezik", + "tok": "toki luka Esalasi", + "tr": "Avusturya İşaret Dili", + "tt": "Австрия ишарәләр теле", + "zh": "奥地利手语", + "zh_Hans": "奥地利手语", + "zh_Hant": "奧地利手語" + }, + "lis": { + "ar": "لغة الإشارة السورية", + "ast": "llingua de señes italiana", + "bn": "ইতালীয় ইশারা ভাষা", + "br": "yezh ar sinoù italianek", + "co": "lingua di i cenni taliana", + "cy": "Iaith Arwyddo Eidaleg", + "de": "italienische Gebärdensprache", + "el": "Ιταλική Νοηματική Γλώσσα", + "eml": "lèngva di sègn itagliàna", + "en": "Syrian Sign Language", + "en-gb": "Syrian Sign Language", + "eo": "itala signolingvo", + "es": "lengua de signos italiana", + "eu": "Italiako keinu hizkuntza", + "fa": "زبان اشاره ایتالیایی", + "fi": "italialainen viittomakieli", + "fr": "langue des signes syrienne", + "fur": "lenghe dai segns italiane", + "ga": "teanga chomharthaíochta na Siria", + "gl": "lingua de signos italiana", + "he": "שפת הסימנים הסורית", + "hif": "Italian Sign Language", + "id": "Bahasa Isyarat Italia", + "is": "ítalskt táknmál", + "it": "lingua dei segni italiana", + "ja": "シリア手話", + "ko": "이탈리아 수화", + "la": "lingua gesticulatoria Italica", + "lfn": "lingua de sinia italian", + "lij": "Lengua di Segni Italian-a", + "lmo": "lèngua dei sègn italiana", + "mt": "lingwa tas-sinjali Taljana", + "nap": "lenguaggio d' 'e signe taliane", + "nl": "italiaanse gebarentaal", + "nn": "Italiensk teiknspråk", + "oc": "lenga dels signes italiana", + "pms": "lenga dij segn italian-a", + "rm": "lingua da segns taliana", + "roa-tara": "lenghe de le signe tagliane", + "sc": "Limba de sos Sinnos Italiana", + "scn": "Lingua dî Signa Taliana", + "sco": "Italian Sign Leid", + "sl": "italijanski znakovni jezik", + "tok": "toki luka Italija", + "tr": "Suriye İşaret Dili", + "uk": "італійська жестова мова", + "vec": "łéngua dei segni italiana", + "war": "Linggwahe hin Sinyales Initalyana", + "zh": "義大利手語", + "zh_Hans": "叙利亚手语", + "zh_Hant": "敘利亞手語" + }, + "csl": { + "bn": "চীনা ইশারা ভাষা", + "ca": "llengua de signes xinesa", + "cs": "čínský znakový jazyk", + "de": "Chinesische Gebärdensprache", + "en": "Chinese Sign Language", + "en-gb": "Chinese Sign Language", + "eo": "ĉina signolingvo", + "fa": "زبان اشاره چینی", + "fr": "langue des signes chinoise", + "ga": "teanga chomharthaíochta na Síne", + "he": "שפת הסימנים הסינית", + "hi": "चीनी सांकेतिक भाषा", + "id": "Bahasa Isyarat Tiongkok", + "it": "lingua dei segni cinese", + "ja": "中国手話", + "ko": "중국 수어", + "lfn": "lingua de sinia jonguo", + "nap": "Lenguaggio d' 'e signe d' 'a Cina", + "nl": "chinese gebarentaal", + "pa": "ਚੀਨੀ ਚਿਹਨ ਭਾਸ਼ਾ", + "pms": "Lenga dij segn cinèisa", + "pt": "língua de sinais chinesa", + "roa-tara": "Lenghe de le signe cenise", + "ru": "китайский жестовый язык", + "scn": "Lingua dî Signa Cinisa", + "tok": "toki luka Sonko", + "tr": "Çin İşaret Dili", + "zh": "中國手語", + "zh-hk": "中國手語", + "zh_Hans": "中国手语", + "zh_Hant": "中國手語" + }, + "dsgs": { + "bn": "সুইস-জার্মান ইশারা ভাষা", + "ca": "llengua de signes germanosuïssa", + "de": "Deutschschweizer Gebärdensprache", + "en": "Swiss-German Sign Language", + "en-gb": "Swiss-German Sign Language", + "eo": "svisgermana gestlingvo", + "fa": "زبان اشاره سوئیسی-آلمانی", + "fr": "langue des signes de Suisse alémanique", + "ga": "teanga chomharthaíochta Eilvéiseach-Gearmánach", + "gsw": "Deutschschweizer Gebärdensprache", + "ha": "Harshen Kurame na Switzerland da Jamusanci", + "he": "שפת הסימנים השווייצרית-גרמנית", + "hi": "स्विस-जर्मन सांकेतिक भाषा", + "id": "Bahasa Isyarat Jerman-Swiss", + "ja": "スイス・ドイツ手話", + "pms": "Lenga dij segn dla Svìssera tedesca", + "sl": "švicarskonemški znakovni jezik", + "tr": "İsviçre-Alman İşaret Dili", + "tt": "швейцарияле немец ишарә теле", + "zh": "瑞士德语手语", + "zh_Hans": "瑞士德语手语", + "zh_Hant": "瑞士德語手語" + }, + "gsl": { + "bn": "ঘানাই ইশারা ভাষা", + "cy": "Iaith Arwyddo Ghana", + "de": "Ghanaische Gebärdensprache", + "en": "Ghanaian Sign Language", + "en-gb": "Ghanaian Sign Language", + "eo": "ganaa signolingvo", + "es": "lenguaje de signos de Ghana", + "fr": "langue des signes ghanéenne", + "ga": "teanga chomharthaíochta Ghána", + "hi": "घाना की सांकेतिक भाषा", + "ja": "ガーナ手話", + "lfn": "lingua de sinia ganaian", + "pms": "Lenga dij segn dël Ghana", + "pt": "Língua de Sinais de Gana", + "scn": "Lingua dî Signa Ghanisa", + "tok": "toki luka Kana", + "tr": "Gana İşaret Dili" + }, + "jsl": { + "ar": "لغة الاشارة اليابانية", + "bn": "জাপানি ইশারা ভাষা", + "br": "yezh ar sinoù japanek", + "ca": "llengua de signes japonesa", + "cs": "japonský znakový jazyk", + "cy": "Iaith Arwyddo Japaneg", + "de": "Japanische Gebärdensprache", + "en": "Japanese Sign Language", + "en-gb": "Japanese Sign Language", + "eo": "japana signolingvo", + "es": "lengua de señas japonesa", + "fa": "زبان اشاره ژاپنی", + "fi": "japanilainen viittomakieli", + "fr": "langue des signes japonaise", + "ga": "teanga chomharthaíochta na Seapáine", + "he": "שפת הסימנים היפנית", + "hi": "जापानी सांकेतिक भाषा", + "hif": "Japanese Sign Language", + "hu": "japán jelnyelv", + "id": "Bahasa Isyarat Jepang", + "it": "lingua dei segni giapponese", + "ja": "日本手話", + "ko": "일본 수화", + "la": "lingua gesticulatoria Iaponica", + "lfn": "lingua de sinia nion", + "ms": "Bahasa Isyarat Jepun", + "nl": "Japanse gebarentaal", + "pa": "ਜਪਾਨੀ ਚਿਹਨੀ ਭਾਸ਼ਾ", + "pms": "Lenga dij segn giaponèisa", + "pt": "Língua de Sinais Japonesa", + "ru": "японский жестовый язык", + "sc": "Limba de sos Sinnos Giapponesa", + "scn": "Lingua dî Signa Giappunisa", + "sl": "japonski znakovni jezik", + "sv": "Japanskt teckenspråk", + "tok": "toki luka Nijon", + "tr": "Japon İşaret Dili", + "uk": "Японська жестова мова", + "vec": "Lengua de i segni giaponexe", + "vi": "ngôn ngữ ký hiệu tiếng Nhật", + "zh": "日本手语", + "zh_Hans": "日本手语", + "zh_Hant": "日本手話" + }, + "thsl": { + "de": "Thailändische Gebärdensprache", + "en": "Thai Sign Language", + "en-gb": "Thai Sign Language", + "eo": "taja signolingvo", + "fa": "زبان اشاره تایلندی", + "ga": "teanga chomharthaíochta na Téalainne", + "he": "שפת הסימנים התאילנדית", + "hi": "थाई सांकेतिक भाषा", + "hif": "Thae Sign Language", + "id": "Bahasa Isyarat Thai", + "ja": "タイ手話", + "lfn": "lingua de sinia tai", + "lmo": "Lèngua d'i sègn d'la Thailandia", + "mt": "Lingwa tas-Sinjali Tajlandiża", + "nl": "Thaise gebarentaal", + "pms": "Lenga dij segn tailandèisa", + "pt": "Língua de sinais tailandesa", + "sc": "Limba de sos Sinnos Thailandesa", + "scn": "Lingua dî Signa Thai", + "th": "ภาษามือไทย", + "tok": "toki luka Tawi", + "tr": "Tay İşaret Dili", + "zh": "泰國手語" + }, + "ttsl": { + "de": "Trinidad-und-Tobago-Gebärdensprache", + "en": "Trinidadian Sign Language", + "en-gb": "Trinidadian Sign Language", + "fa": "زبان اشاره ترینیداد و توباگویی", + "fr": "langue des signes trinidadienne", + "ga": "teanga chomharthaíochta Oileán na Tríonóide", + "it": "lingua dei segni trinidadiana", + "ja": "トリニダード・トバゴ手話", + "tok": "toki luka Sinita", + "tr": "Trinidad ve Tobago İşaret Dili" + }, + "usl": { + "de": "Ugandische Gebärdensprache", + "en": "Uzbek Sign Language", + "en-gb": "Uzbek Sign Language", + "eo": "uganda signolingvo", + "fa": "زبان اشاره اوگاندایی", + "fr": "langue des signes ougandaise", + "ga": "teanga chomharthaíochta na hÚisbéiceastáine", + "ig": "Asụsụ Ogbi nke Uganda", + "ja": "ウガンダ手話", + "lfn": "lingua de sinia ugandan", + "lg": "olulimi olukozesebwa abantu abalina obuzibu mu kwogera oba okuwulira", + "nl": "Ugandese gebarentaal", + "pms": "Lenga dij segn ugandèisa", + "pt": "Língua de Sinais do Uganda", + "ru": "узбекский жестовый язык", + "scn": "Lingua dî Signa Uganna", + "tok": "toki luka Ukanta", + "tr": "Özbek İşaret Dili", + "tt": "Уганда ишарә теле", + "uz-cyrl": "ўзбек имо-ишора тили", + "uz-latn": "o‘zbek imo-ishora tili" + }, + "msl": { + "ast": "llingua de señes mongola", + "bn": "মঙ্গোলীয় ইশারা ভাষা", + "de": "Mongolische Gebärdensprache", + "en": "Mongolian Sign Language", + "en-gb": "Mongolian Sign Language", + "eo": "mongola signolingvo", + "es": "lengua de signos mongola", + "fa": "زبان اشاره مغولستانی", + "fr": "langue des signes mongole", + "ga": "teanga chomharthaíochta na Mongóile", + "ig": "Asụsụ Ogbi nke Mongolia", + "ja": "モンゴル手話", + "lfn": "lingua de sinia mongol", + "mn": "Монгол дохионы хэл", + "nl": "Mongoolse gebarentaal", + "pms": "Lenga dij segn dla Mongolia", + "pt": "Língua de Sinais da Mongólia", + "ru": "монгольский жестовый язык", + "scn": "Lingua dî Signa Mòngola", + "tok": "toki luka Monko", + "tr": "Moğolistan İşaret Dili", + "tt": "монгол ишарә теле" + }, + "krsl": { + "en": "Kazakh-Russian Sign Language", + "fr": "langue des signes kazakho-russe", + "ga": "teanga chomharthaíochta Chasacach-Rúiseach", + "ig": "Asụsụ Ogbi nke Kazakh", + "kk-cyrl": "Қазақ-орыс ымдау тілі", + "zh": "і哈萨克-俄罗斯手语" + }, + "kossl": { + "bn": "কসোভো ইশারা ভাষা", + "en": "Kosovar Sign Language", + "en-gb": "Kosovar Sign Language", + "fi": "kosovolainen viittomakieli", + "fr": "langue des signe kosovare", + "ga": "teanga chomharthaíochta na Cosaive", + "ja": "コソボ手話", + "se": "kosovolaš seavagiella", + "smn": "kosovolâš seevvimkielâ", + "sq": "Gjuha e Shenjave Kosovare", + "sr-el": "kosovski znakovni jezik", + "sv": "kosovanskt teckenspråk", + "tr": "Kosova İşaret Dili", + "zh_Hans": "科索沃手语", + "zh_Hant": "科索沃手語" + }, + "gjshk": { + "bn": "কসোভো ইশারা ভাষা", + "en": "Kosovar Sign Language", + "en-gb": "Kosovar Sign Language", + "fi": "kosovolainen viittomakieli", + "fr": "langue des signe kosovare", + "ga": "teanga chomharthaíochta na Cosaive", + "ja": "コソボ手話", + "se": "kosovolaš seavagiella", + "smn": "kosovolâš seevvimkielâ", + "sq": "Gjuha e Shenjave Kosovare", + "sr-el": "kosovski znakovni jezik", + "sv": "kosovanskt teckenspråk", + "tr": "Kosova İşaret Dili", + "zh_Hans": "科索沃手语", + "zh_Hant": "科索沃手語" + }, + "сзј": { + "ca": "llengua de signes sèrbia", + "cy": "Iaith arwyddion Serbia", + "de": "Serbische Gebärdensprache", + "en": "Serbian Sign Language", + "en-gb": "Serbian Sign Language", + "es": "lengua de signos serbia", + "eu": "serbiar keinu hizkuntza", + "fr": "langue des signes serbe", + "ga": "teanga chomharthaíochta na Seirbia", + "gn": "ñe'ẽ rechaukaha Sérvia", + "nl": "Servische Gebarentaal", + "pt": "língua gestual sérvia", + "ru": "сербский язык жестов", + "sr-ec": "српски знаковни језик", + "sr-el": "srpski znakovni jezik", + "tr": "Sırp İşaret Dili" + }, + "szj": { + "ca": "llengua de signes sèrbia", + "cy": "Iaith arwyddion Serbia", + "de": "Serbische Gebärdensprache", + "en": "Serbian Sign Language", + "en-gb": "Serbian Sign Language", + "es": "lengua de signos serbia", + "eu": "serbiar keinu hizkuntza", + "fr": "langue des signes serbe", + "ga": "teanga chomharthaíochta na Seirbia", + "gn": "ñe'ẽ rechaukaha Sérvia", + "nl": "Servische Gebarentaal", + "pt": "língua gestual sérvia", + "ru": "сербский язык жестов", + "sr-ec": "српски знаковни језик", + "sr-el": "srpski znakovni jezik", + "tr": "Sırp İşaret Dili" + }, + "lis-si": { + "de": "Lingua dei segni della Svizzera italiana", + "en": "Swiss-Italian Sign Language", + "en-gb": "Swiss-Italian Sign Language", + "eo": "svis-itala signolingvo", + "fr": "langue des signes de la Suisse italienne", + "ga": "teanga chomharthaíochta Eilvéiseach-Iodálach", + "it": "Lingua dei segni della Svizzera italiana", + "ja": "スイス=イタリア手話", + "pms": "Lenga dij segn dla Svìssera italian-a", + "sl": "švicarskoitalijanski znakovni jezik", + "tr": "İsviçre-İtalyan İşaret Dili", + "tt": "швейцарияле итальян ишарә теле" + }, + "lsf-sr": { + "bn": "সুইস-ফরাসি ইশারা ভাষা", + "ca": "llengua de signes suïssa de parla francesa", + "de": "Westschweizer Gebärdensprache", + "en": "Swiss-French Sign Language", + "en-gb": "Swiss-French Sign Language", + "fr": "langue des signes de Suisse romande", + "ga": "teanga chomharthaíochta Eilvéiseach-Francach", + "hr": "Švicarski-francuski znakovni jezik", + "ja": "スイス・フランス手話", + "pms": "Lenga dij segn dla Svìssera fransèisa", + "sl": "švicarski francoski znakovni jezik", + "tr": "İsviçre-Fransız İşaret Dili", + "tt": "швейцарияле француз ишарә теле", + "zh": "瑞士法语手语", + "zh_Hans": "瑞士法语手语", + "zh_Hant": "瑞士法語手語" + }, + "lsh": { + "en": "Haitian Sign Language", + "en-gb": "Haitian Sign Language", + "fr": "langue des signes haïtienne", + "ga": "teanga chomharthaíochta Háítí", + "tr": "Haiti İşaret Dili" + }, + "psl": { + "ar": "لغة الاشارات الفلسطينية", + "bcc": "پاکستان اشارہ", + "bgn": "پاکستان اشارہ", + "bn": "পাকিস্তান ইশারা ভাষা", + "brh": "پاکستان اشارہ", + "ca": "llengua de signes pakistanesa", + "de": "Pakistanische Gebärdensprache", + "en": "Pakistan Sign Language", + "en-gb": "Palestinian Sign Language", + "eo": "pakistana signolingvo", + "es": "lengua de señas pakistaní", + "fa": "پاکستان اشاره", + "fr": "langue des signes pakistanaise", + "ga": "teanga chomharthaíochta na Pacastáine", + "he": "שפת הסימנים הפלסטינית", + "hi": "पाकिसतान इशारा", + "hno": "پاکستان اشارہ", + "ja": "パキスタン手話", + "khw": "پاکستان اشارہ", + "lfn": "lingua de sinia pacistani", + "pa": "ਪਾਕਿਸਤਾਨ ਇਸ਼ਾਰਾ", + "pms": "Lenga dij segn pakistan-a", + "pnb": "پاکستان اشارہ", + "ps": "پاکستان اشاره", + "ru": "пакистанский жестовый язык", + "sd": "پاڪستان اشاره", + "skr": "پاکستان اشارہ", + "sl": "pakistanski znakovni jezik", + "sv": "pakistanskt teckenspråk", + "tok": "toki luka Pakisan", + "tr": "Pakistan İşaret Dili", + "ur": "پاکستان اشارہ", + "zh": "巴基斯坦手语", + "zh_Hans": "巴勒斯坦手语", + "zh_Hant": "巴勒斯坦手語" + }, + "lif": { + "ar": "لغة الاشارات الفلسطينية", + "en": "Palestinian Sign Language", + "en-gb": "Palestinian Sign Language", + "fr": "langue des signes palestinienne", + "ga": "teanga chomharthaíochta na Palaistíne", + "he": "שפת הסימנים הפלסטינית", + "ja": "パレスチナ手話", + "tr": "Filistin İşaret Dili", + "zh_Hans": "巴勒斯坦手语", + "zh_Hant": "巴勒斯坦手語" + }, + "sagt": { + "af": "Suid-Afrikaanse Gebaretaal", + "ast": "llingua de señes sudafricana", + "bn": "দক্ষিণ আফ্রিকীয় ইশারা ভাষা", + "cy": "Iaith Arwyddo De Affrica", + "de": "Südafrikanische Gebärdensprache", + "en": "South African Sign Language", + "en-gb": "South African Sign Language", + "es": "Lenguaje de Signos Sudafricano", + "fa": "زبان اشاره آفریقای جنوبی", + "fr": "langue des signes sud-africaine", + "ga": "teanga chomharthaíochta na hAfraice Theas", + "gl": "Lingua de sinais surafricana", + "hif": "South African Sign Language", + "hr": "Južnoafrički znakovni jezik", + "ig": "South African Sign Language", + "it": "lingua dei segni sudafricana", + "ja": "南アフリカ手話", + "lfn": "lingua de sinia sudafrican", + "nb_NO": "sørafrikansk tegnspråk", + "nl": "Zuid-Afrikaanse gebarentaal", + "nso": "South African Sign Language", + "pms": "Lenga dij segn dël Sudàfrica", + "pt": "Língua gestual sul-africana", + "ru": "южноафриканский жестовый язык", + "scn": "Lingua dî Signa Sudàfricana", + "sk": "Juhoafrický posunkový jazyk", + "sl": "južnoafriški znakovni jezik", + "tok": "toki luka Setapika", + "tr": "Güney Afrika İşaret Dili", + "vec": "łéngua dei segni sudafricana", + "xh": "Ulwimi lwezandla lwase Mzantsi Afrika", + "zh": "南非手語", + "zh-cn": "南非手语", + "zh_Hant": "南非手語", + "zu": "Ulimi lwezandla lwaseNingizimu Afrika" + }, + "sasl": { + "af": "Suid-Afrikaanse Gebaretaal", + "ast": "llingua de señes sudafricana", + "bn": "দক্ষিণ আফ্রিকীয় ইশারা ভাষা", + "cy": "Iaith Arwyddo De Affrica", + "de": "Südafrikanische Gebärdensprache", + "en": "South African Sign Language", + "en-gb": "South African Sign Language", + "es": "Lenguaje de Signos Sudafricano", + "fa": "زبان اشاره آفریقای جنوبی", + "fr": "langue des signes sud-africaine", + "ga": "teanga chomharthaíochta na hAfraice Theas", + "gl": "Lingua de sinais surafricana", + "hif": "South African Sign Language", + "hr": "Južnoafrički znakovni jezik", + "ig": "South African Sign Language", + "it": "lingua dei segni sudafricana", + "ja": "南アフリカ手話", + "lfn": "lingua de sinia sudafrican", + "nb_NO": "sørafrikansk tegnspråk", + "nl": "Zuid-Afrikaanse gebarentaal", + "nso": "South African Sign Language", + "pms": "Lenga dij segn dël Sudàfrica", + "pt": "Língua gestual sul-africana", + "ru": "южноафриканский жестовый язык", + "scn": "Lingua dî Signa Sudàfricana", + "sk": "Juhoafrický posunkový jazyk", + "sl": "južnoafriški znakovni jezik", + "tok": "toki luka Setapika", + "tr": "Güney Afrika İşaret Dili", + "vec": "łéngua dei segni sudafricana", + "xh": "Ulwimi lwezandla lwase Mzantsi Afrika", + "zh": "南非手語", + "zh-cn": "南非手语", + "zh_Hant": "南非手語", + "zu": "Ulimi lwezandla lwaseNingizimu Afrika" + }, + "lsfb": { + "bn": "ফরাসি বেলজীয় ইশারা ভাষা", + "ca": "llengua de signes belga francès", + "de": "französisch-belgische Gebärdensprache", + "en": "French Belgian Sign Language", + "en-gb": "French Belgian Sign Language", + "eo": "franca belga gestolingvo", + "fa": "زبان اشاره بلژیکی فرانسوی", + "fr": "langue des signes de Belgique francophone", + "ga": "teanga chomharthaíochta na Beilge Francaí", + "hr": "Belgijski frankofonski znakovni jezik", + "ig": "Asụsụ Ogbi French Belgian", + "ja": "ワロン手話", + "nl": "Frans-Belgische Gebarentaal", + "sl": "francoskobelgijski znakovni jezik", + "tt": "Бельгиянең француз телле җәмгыятенең ишарә теле" + }, + "ipsl": { + "ar": "لغة الإشارة الهندية الباكستانية", + "bcc": "اشارہ", + "bgn": "اشارہ", + "bn": "ইন্দো-পাকিস্তানি ইশারা ভাষা", + "brh": "اشارہ", + "ca": "lengua de signes indopakistanesa", + "de": "Indo-Pakistan Sign Language", + "en": "Indo-Pakistani Sign Language", + "en-gb": "Indo-Pakistani Sign Language", + "es": "lengua de señas indo-pakistaní", + "fa": "زبان اشاره هندوپاکستانی", + "fr": "langue des signes indo-pakistanaise", + "ga": "teanga chomharthaíochta na hInd-Phacastáine", + "he": "שפת הסימנים ההודית-פקיסטנית", + "hi": "इशारा", + "hno": "اشارہ", + "id": "Bahasa Isyarat India-Pakistan", + "ja": "インド・パキスタン手話", + "ne": "भारतीय सांकेतिक भाषा", + "pa": "ਇਸ਼ਾਰਾ", + "pms": "Lenga dij segn pakistan-a", + "pnb": "اشارہ", + "ps": "اشاره", + "ru": "индо-пакистанский жестовый язык", + "sd": "اشاره", + "skr": "اشارہ", + "sl": "indopakistanski znakovni jezik", + "ta": "இந்திய-பாக்கித்தான் சைகை மொழி்", + "tok": "toki luka Palata", + "tr": "Hint-Pakistan İşaret Dili", + "ur": "پاک و ہند اشاراتی زبان", + "zh": "印度-巴基斯坦手语" + }, + "nsl": { + "de": "Namibische Gebärdensprache", + "en": "Namibian Sign Language", + "en-gb": "Namibian Sign Language", + "eo": "namibia signolingvo", + "fa": "زبان اشاره نامیبیایی", + "fi": "Namibialainen viittomakieli", + "fr": "langue des signes namibienne", + "ga": "teanga chomharthaíochta na Namaibe", + "ha": "Harshen kuramen Namibiya", + "hu": "namíbiai jelnyelv", + "ig": "Asụsụ Ogbi nke Namibia", + "ja": "ナミビア手話", + "lfn": "lingua de sinia namibian", + "pms": "Lenga dij segn dla Namibia", + "pt": "Língua de Sinais da Namíbia", + "scn": "Lingua dî Signa Namibbiana", + "tok": "toki luka Namipija", + "tr": "Namibya İşaret Dili", + "tt": "Намибия ишарә теле" + }, + "nisl": { + "de": "Northern Ireland Sign Language", + "en": "Northern Ireland Sign Language", + "fa": "زبان اشاره ایرلند شمالی", + "fr": "langue des signes nord-irlandaise", + "ga": "teanga chomharthaíochta Thuaisceart Éireann", + "hi": "उत्तरी आयरलैंड सांकेतिक भाषा", + "it": "lingua dei segni nordirlandese", + "ja": "北アイルランド手話", + "scn": "Lingua dî Signa Irlanna dû Nord", + "tr": "Kuzey İrlanda İşaret Dili" + }, + "ítm": { + "anp": "आइसलैंडिक सांकेतिक भाषा", + "bn": "আইসল্যান্ডীয় ইশারা ভাষা", + "ckb": "زمانی ئاماژەی ئایسلەندی", + "co": "lingua di i cenni islandesa", + "da": "Islandsk tegnsprog", + "de": "Isländische Gebärdensprache", + "en": "Icelandic Sign Language", + "en-gb": "Icelandic Sign Language", + "eo": "islanda signolingvo", + "es": "Lengua de señas islandesa", + "fa": "زبان اشاره ایسلندی", + "fi": "islantilainen viittomakieli", + "fr": "langue des signes islandaise", + "fur": "lenghe dai signse islandese", + "ga": "teanga chomharthaíochta na hÍoslainne", + "hr": "Islandski znakovni jezik", + "is": "íslenskt táknmál", + "it": "lingua dei segni islandese", + "ja": "アイスランド手話", + "ku": "zimanê hêmayan ê îslendî", + "ku-latn": "zimanê hêmayan ê îslendî", + "lfn": "lingua de sinia islansce", + "nb_NO": "islandsk tegnspråk", + "nl": "IJslandse gebarentaal", + "oc": "lenga dels signes islandesa", + "pms": "lenga dij segn islandèisa", + "ru": "исландский жестовый язык", + "scn": "Lingua dî Signa Islannisi", + "sv": "Isländskt teckenspråk", + "tok": "toki luka Isilan", + "tr": "İzlanda İşaret Dili", + "tt": "Исландия ишарә теле", + "vec": "lengua de i segni ìxlèndexe" + }, + "libras": { + "ast": "llingua de señes brasiliana", + "bn": "ব্রাজিলীয় ইশারা ভাষা", + "br": "yezh ar sinoù brazilek", + "ca": "llengua de signes brasilera", + "co": "lingua di i cenni brasiliana", + "cy": "Iaith arwyddo Brasil", + "da": "brasiliansk tegnsprog", + "de": "Brasilianische Gebärdensprache", + "eml": "Lèngva di sègn braśigliàna", + "en": "Brazilian Sign Language", + "en-gb": "Brazilian Sign Language", + "eo": "brazila signolingvo", + "es": "lengua de señas brasileña", + "eu": "Brasilgo keinu hizkuntza", + "fa": "زبان اشاره برزیلی", + "fr": "langue des signes brésilienne", + "ga": "teanga chomharthaíochta na Brasaíle", + "he": "שפת הסימנים הברזילאית", + "hi": "ब्राज़ीलियाई सांकेतिक भाषा", + "hr": "brazilski znakovni jezik", + "id": "Bahasa Isyarat Brasil", + "it": "lingua dei segni brasiliana", + "ja": "ブラジル手話", + "la": "lingua gesticulatoria Brasiliensis", + "lfn": "lingua de sinia brasilera", + "ms": "Bahasa Isyarat Brazil", + "nb_NO": "brasiliansk tegnspråk", + "nl": "Braziliaanse gebarentaal", + "pa": "ਲਿਬਰਾਸ", + "pms": "Lenga dij segn brasilian-a", + "pnb": "لبراس", + "pt": "língua brasileira de sinais", + "pt_BR": "língua brasileira de sinais", + "ru": "бразильский жестовый язык", + "sat": "ᱵᱨᱟᱡᱤᱞᱤᱭᱟᱱ ᱤᱥᱟᱹᱨᱟ ᱯᱟᱹᱨᱥᱤ", + "scn": "Lingua dî Signa Brasiliana", + "sl": "brazilski znakovni jezik", + "sv": "brasilianskt teckenspråk", + "tok": "toki luka Pasiju", + "tr": "Brezilya İşaret Dili", + "tt": "Брәзил ишарәләр теле", + "uk": "Бразильська мова жестів", + "vec": "łéngua dei segni braziłegna", + "zh": "巴西手語", + "zu": "isi-Brazilian Sign Language" + }, + "hksl": { + "ary": "اللوغة د لإشارات د هونكونڭ", + "ca": "llengua de signes de Hong Kong", + "cs": "hongkongský znakový jazyk", + "en": "Hong Kong Sign Language", + "en-gb": "Hong Kong Sign Language", + "fa": "زبان اشاره هنگ کنگی", + "fi": "hongkongilainen viittomakieli", + "fr": "langue des signes hongkongaise", + "ga": "teanga chomharthaíochta Hong Cong", + "ha": "Harshen Kurame na Hong Kong", + "hi": "हांगकांग सांकेतिक भाषा", + "ja": "香港手話", + "pt": "Língua de Sinais de Hong-Kong", + "ru": "гонконгский жестовый язык", + "sv": "Hongkongs teckenspråk", + "tok": "toki luka Enkon", + "tr": "Hong Kong İşaret Dili", + "yue": "香港手語", + "zh": "香港手语", + "zh-hk": "香港手語", + "zh_Hant": "香港手語" + }, + "basl": { + "ar": "لغة الإشارة الخاصة بالأمريكيين السود", + "ca": "llengua de signes americana negra", + "en": "Black American Sign Language", + "fa": "زبان اشاره آمریکایی سیاهپوستان", + "hi": "ब्लैक अमेरिकन सांकेतिक भाषा", + "vi": "Ngôn ngữ ký hiệu người Mỹ gốc Phi", + "zh": "美国黑人手语" + }, + "bhsl": { + "el": "Μπουτανική Νοηματική Γλώσσα", + "en": "Bhutanese Sign Language", + "en-ca": "Bhutanese Sign Language", + "en-gb": "Bhutanese Sign Language", + "eo": "butana signolingvo", + "fa": "زبان اشاره بوتانی", + "ga": "teanga chomharthaíochta na Bútáine", + "tok": "toki luka Tuku", + "tr": "Butan İşaret Dili" + }, + "liu": { + "ar": "لغة الإشارة الأردنية", + "de": "Jordanische Gebärdensprache", + "en": "Jordanian Sign Language", + "eo": "jordania signolingvo", + "fr": "langue des signes jordanienne", + "ga": "teanga chomharthaíochta na hIordáine", + "he": "שפת הסימנים הירדנית", + "ja": "ヨルダン手話", + "lfn": "lingua de sinia urduni", + "pms": "lenga dij segn dla Giordania", + "tr": "Ürdün İşaret Dili", + "zh_Hans": "约旦手语", + "zh_Hant": "約旦手語" + }, + "bksl": { + "bn": "বান খোর ইশারা ভাষা", + "en": "Ban Khor Sign Language", + "en-gb": "Ban Khor Sign Language", + "fr": "langue des signes de Ban Khor", + "ga": "teanga chomharthaíochta Ban Khor", + "hi": "बान खोर सांकेतिक भाषा", + "hr": "Ban khor znakovni jezik", + "ja": "バンコール手話", + "pms": "Lenga dij segn ban khor", + "pt": "Língua de sinais de Ban Khor", + "ru": "бан-кхорский жестовый язык", + "th": "ภาษามือบ้านค้อ", + "tr": "Ban Khor İşaret Dili" + }, + "arsl": { + "bn": "আর্মেনীয় ইশারা ভাষা", + "cs": "arménský znakový jazyk", + "de": "Armenische Gebärdensprache", + "en": "Armenian Sign Language", + "en-gb": "Armenian Sign Language", + "eo": "armena signolingvo", + "es": "lengua de señas armenia", + "fa": "زبان اشاره ارمنستانی", + "fi": "armenialainen viittomakieli", + "fr": "langue des signes arménienne", + "ga": "teanga chomharthaíochta na hAirméine", + "he": "שפת הסימנים הארמנית", + "hr": "Armenski znakovni jezik", + "hy": "հայերեն ժեստերի լեզու", + "ig": "Asụsụ Ogbi nke Armenian", + "ja": "アルメニア手話", + "lfn": "lingua de sinia haiaren", + "nl": "Armeense gebarentaal", + "pms": "Lenga dij segn armen-a", + "pt": "Língua gestual armeniana", + "ru": "армянский жестовый язык", + "sl": "armenski znakovni jezik", + "tok": "toki luka Aja", + "tr": "Ermeni İşaret Dili", + "tt": "әрмән ишарә теле" + }, + "nts": { + "bcl": "Pansinyal na tataramong Malgatse", + "bn": "নরওয়েজীয় ইশারা ভাষা", + "ca": "llengua de signes noruega", + "de": "Norwegische Gebärdensprache", + "en": "Norwegian Sign Language", + "en-gb": "Norwegian Sign Language", + "eo": "norvega signolingvo", + "es": "Lengua de señas noruega", + "et": "Norra viipekeel", + "fa": "زبان اشاره نروژی", + "fi": "norjalainen viittomakieli", + "fr": "langue des signes norvégienne", + "ga": "teanga chomharthaíochta na hIorua", + "hif": "Norwegian Sign Language", + "hr": "norveški znakovni jezik", + "it": "lingua dei segni norvegese", + "ja": "ノルウェー手話", + "lfn": "lingua de sinia norsce", + "nb_NO": "norsk tegnspråk", + "nl": "noorse gebarentaal", + "nn": "norsk teiknspråk", + "pms": "lenga dij segn norvegèisa", + "rm": "lingua da segns norvegiaisa", + "scn": "Lingua dî Signa Nurviggisi", + "sco": "Norse Sign Leid", + "se": "dárogiel seavagiella", + "sl": "norveški znakovni jezik", + "sv": "norskt teckenspråk", + "tok": "toki luka Nosiki", + "tr": "Norveç İşaret Dili", + "tt": "Норвегия ишарә теле" + }, + "vgt": { + "bn": "ফ্লেমিশ ইশারা ভাষা", + "br": "yezh ar sinoù flandrezek", + "ca": "llengua de signes flamenca", + "de": "Flämische Gebärdensprache", + "en": "Flemish Sign Language", + "en-gb": "Flemish Sign Language", + "eo": "flandra signolingvo", + "es": "lengua de señas flamenca", + "fa": "زبان اشاره فلاندری", + "fr": "langue des signes flamande", + "ga": "teanga chomharthaíochta Phléimeannach", + "gl": "Lingua de signos flamenga", + "he": "שפת הסימנים הפלמית", + "hif": "Flemish Sign Language", + "hr": "Belgijski znakovni jezik", + "hy": "ֆլամանդերեն ժեստերի լեզու", + "ja": "フラマン手話", + "lfn": "lingua de sinia flames", + "nl": "Vlaamse Gebarentaal", + "pms": "Lenga dij segn belga", + "roa-tara": "Lenghe de le signe bèlge", + "ru": "фламандский язык жестов", + "sl": "flamski znakovni jezik", + "tr": "Flaman İşaret Dili", + "tt": "фламанд телле җәмгыятенең ишарә теле", + "zh_Hans": "弗拉芒手语", + "zh_Hant": "弗拉芒手語" + }, + "lsc": { + "ast": "llingua de señes catalana", + "be-tarask": "каталянская жэставая мова", + "bn": "কাতালান ইশারা ভাষা", + "br": "yezh ar sinoù katalan", + "ca": "llengua de signes catalana", + "da": "catalansk tegnesprog", + "de": "Llengua de Signes Catalana", + "en": "Catalan Sign Language", + "en-gb": "Catalan Sign Language", + "eo": "kataluna signolingvo", + "es": "lengua de signos catalana", + "fa": "زبان اشاره کاتالان", + "fr": "langue des signes catalane", + "fur": "Lenghe dai segns catalene", + "ga": "teanga chomharthaíochta na Catalóine", + "gl": "Lingua de sinais catalá", + "he": "שפת הסימנים הקטלאנית", + "hi": "कैटलन सांकेतिक भाषा", + "id": "Bahasa Isyarat Katalan", + "it": "lingua dei segni catalana", + "ja": "カタルーニャ手話", + "ko": "카탈루냐어 수화", + "ku": "zimanê hêmayan ê ketelanî", + "ku-latn": "zimanê hêmayan ê ketelanî", + "lfn": "lingua de sinia catalan", + "nb_NO": "katalansk tegnspråk", + "nl": "Catalaanse gebarentaal", + "nn": "katalansk teiknspråk", + "pl": "Kataloński język migowy", + "pms": "Lenga dij segn catalan-a", + "pt": "Língua de sinais catalã", + "rm": "Lingua da segns catalana", + "ru": "каталонский жестовый язык", + "scn": "Lingua dî Signa Catalana", + "sl": "katalonski znakovni jezik", + "sv": "Katalanskt teckenspråk", + "tok": "toki luka Katala", + "tr": "Katalan İşaret Dili", + "tt": "каталан ишарә теле", + "vec": "łéngua dei segni catełana", + "zh": "加泰隆尼亞手語", + "zh_Hans": "加泰罗尼亚手语", + "zh_Hant": "加泰隆尼亞手語" + }, + "nzsl": { + "anp": "न्यूजीलैंड सांकेतिक भाषा", + "ar": "لغة الإشارة النيوزيلندية", + "ary": "اللوغة دليشارة ديال نيوزيلاندا", + "ast": "llingua de señes de Nueva Zelanda", + "bn": "নিউ জিল্যান্ড ইশারা ভাষা", + "br": "yezh ar sinoù zelandnevezek", + "ca": "llengua de signes de Nova Zelanda", + "co": "lingua di i cenni neuzilandese", + "cy": "Iaith Arwyddo Seland Newydd", + "de": "neuseeländische Gebärdensprache", + "el": "Νεοζηλανδική Νοηματική Γλώσσα", + "eml": "Lèngva di sègn neośelandéśa", + "en": "New Zealand Sign Language", + "en-gb": "New Zealand Sign Language", + "eo": "novzelanda gestlingvo", + "es": "lengua de señas neozelandesa", + "et": "Uus-Meremaa viipekeel", + "fa": "زبان اشاره نیوزیلندی", + "fi": "uusiseelantilainen viittomakieli", + "fr": "langue des signes néo-zélandaise", + "fur": "Lenghe dai segns gnovezelandese", + "ga": "teanga chomharthaíochta na Nua-Shéalainne", + "he": "שפת הסימנים הניו זילנדית", + "hi": "न्यूज़ीलैण्ड हस्ताक्षर भाषा", + "hy": "նորզելանդական ժեստերի լեզու", + "hyw": "Նոր Զելանտայի շարժումներու լեզու", + "id": "Bahasa Isyarat Selandia Baru", + "is": "nýsjálenskt táknmál", + "it": "lingua dei segni neozelandese", + "ja": "ニュージーランド手話", + "ka": "ახალზელანდიური ნიშნების ენა", + "la": "lingua gesticulatoria Novozelandensis", + "lmo": "Lèngua d'i sègn neozelandesa", + "ms": "Bahasa Isyarat New Zealand", + "mt": "lingwa tas-sinjali Newzealander", + "nap": "Lenguaggio d' 'e signe novazelandese", + "nb_NO": "nyzealandsk tegnspråk", + "nl": "Nieuw-Zeelandse Gebarentaal", + "nn": "Newzealandsk teiknspråk", + "oc": "lenga dels signs de Nòva Zelanda", + "pl": "nowozelandzki język migowy", + "pms": "Lenga dij segn dla Neuva Zelanda", + "pt": "língua de sinais da Nova Zelândia", + "pt_BR": "língua de sinais da Nova Zelândia", + "rm": "Lingua da segns nova zelandaisa", + "ru": "новозеландский язык жестов", + "sc": "limba de sos sinnos neozelandesa", + "scn": "lingua dî signa nova zilannisi", + "sco": "New Zealand Sign Leid", + "sk": "novozélandský posunkový jazyk", + "sl": "novozelandski znakovni jezik", + "sr": "новозеландски знаковни језик", + "sv": "nyzeeländskt teckenspråk", + "tok": "toki luka Nusilan", + "tr": "Yeni Zelanda İşaret Dili", + "tt": "Яңа Зеландия ымнар теле", + "uk": "новозеландська мова жестів", + "ur": "نیوزی لینڈ کی اشارتی زبان", + "vec": "Lengua de i segni neozełandexe", + "zh": "新西兰标记语言", + "zh-cn": "新西蘭手語", + "zh_Hans": "新西兰手语", + "zh_Hant": "紐西蘭手語" + }, + "aslg": { + "ar": "قواعد لغة الإشارة الأمريكية", + "en": "American Sign Language grammar", + "zh": "美國手語語法" + }, + "lil": { + "ar": "لغة الإشارات اللبنانية", + "de": "Libanesische Gebärdensprache", + "en": "Lebanese Sign Language", + "fr": "langue des signes libanaise", + "ga": "teanga chomharthaíochta na Liobáine", + "he": "שפת הסימנים הלבנונית", + "ja": "レバノン手話", + "tok": "toki luka Lunpan", + "tr": "Lübnan İşaret Dili", + "zh_Hans": "黎巴嫩手语", + "zh_Hant": "黎巴嫩手語" + }, + "ngt": { + "bn": "ওলন্দাজ ইশারা ভাষা", + "br": "yezh ar sinoù izelvroek", + "ca": "llengua de signes neerlandesa", + "de": "Niederländische Gebärdensprache", + "en": "Dutch Sign Language", + "en-gb": "Dutch Sign Language", + "eo": "nederlanda signolingvo", + "fa": "زبان اشاره هلندی", + "fi": "hollantilainen viittomakieli", + "fr": "langue des signes néerlandaise", + "fur": "Lenghe dai segns olandese", + "ga": "teanga chomharthaíochta na hOllainne", + "id": "Bahasa Isyarat Belanda", + "ja": "オランダ手話", + "lfn": "lingua de sinia nederlandes", + "mt": "Lingwa tas-Sinjali Olandiża", + "nl": "Nederlandse gebarentaal", + "pms": "Lenga dij segn olandèisa", + "pt": "língua de sinais neerlandesa", + "rm": "Lingua da segns neerlandaisa", + "scn": "Lingua dî Signa Ulannisi", + "sco": "Dutch Sign Leid", + "sl": "nizozemski znakovni jezik", + "tok": "toki luka Netelan", + "tr": "Hollanda İşaret Dili", + "war": "Linggwahe hin Sinyales Inolandes", + "zh_Hans": "荷兰手语", + "zh_Hant": "荷蘭手語" + }, + "ssl": { + "be-tarask": "швэдзкая жэставая мова", + "bn": "সুয়েডীয় ইশারা ভাষা", + "br": "yezh ar sinoù svedek", + "ca": "llengua de signes sueca", + "cs": "švédský znakový jazyk", + "de": "Svenskt teckenspråk", + "en": "Shanghai Sign Language", + "en-gb": "Shanghai Sign Language", + "eo": "sveda signolingvo", + "fa": "زبان اشاره سوئدی", + "fi": "ruotsalainen viittomakieli", + "fr": "langue des signes suédoise", + "ga": "teanga chomharthaíochta Shang-hai", + "hr": "švedski znakovni jezik", + "ja": "上海手話", + "ku": "zimanê hêmayan ê swêdî", + "ku-latn": "zimanê hêmayan ê swêdî", + "la": "lingua gesticulatoria Suecica", + "lfn": "lingua de sinia svensce", + "nb_NO": "svensk tegnspråk", + "nl": "Swedish Sign Language", + "nn": "svensk teiknspråk", + "pl": "szwedzki język migowy", + "pms": "Lenga dij segn svedèisa", + "rm": "Lingua da segns svedaisa", + "sco": "Swadish Sign Leid", + "se": "ruoŧŧelaš seavagiella", + "sl": "švedski znakovni jezik", + "smn": "ruátálâš seevvimkielâ", + "sv": "svenskt teckenspråk", + "tok": "toki luka Sensa", + "tr": "Şanghay İşaret Dili", + "tt": "швед ишарә теле", + "zh": "瑞典手语", + "zh_Hans": "上海手语", + "zh_Hant": "上海手語" + }, + "sts": { + "be-tarask": "швэдзкая жэставая мова", + "bn": "সুয়েডীয় ইশারা ভাষা", + "br": "yezh ar sinoù svedek", + "ca": "llengua de signes sueca", + "cs": "švédský znakový jazyk", + "de": "Svenskt teckenspråk", + "en": "Swedish Sign Language", + "en-gb": "Swedish Sign Language", + "eo": "sveda signolingvo", + "fa": "زبان اشاره سوئدی", + "fi": "ruotsalainen viittomakieli", + "fr": "langue des signes suédoise", + "ga": "teanga chomharthaíochta na Sualainne", + "hr": "švedski znakovni jezik", + "ja": "スウェーデン手話", + "ku": "zimanê hêmayan ê swêdî", + "ku-latn": "zimanê hêmayan ê swêdî", + "la": "lingua gesticulatoria Suecica", + "lfn": "lingua de sinia svensce", + "nb_NO": "svensk tegnspråk", + "nl": "Swedish Sign Language", + "nn": "svensk teiknspråk", + "pl": "szwedzki język migowy", + "pms": "Lenga dij segn svedèisa", + "rm": "Lingua da segns svedaisa", + "sco": "Swadish Sign Leid", + "se": "ruoŧŧelaš seavagiella", + "sl": "švedski znakovni jezik", + "smn": "ruátálâš seevvimkielâ", + "sv": "svenskt teckenspråk", + "tok": "toki luka Sensa", + "tr": "İsveç İşaret Dili", + "tt": "швед ишарә теле", + "zh": "瑞典手语" + }, + "uzsl": { + "en": "Uzbek Sign Language", + "en-gb": "Uzbek Sign Language", + "ga": "teanga chomharthaíochta na hÚisbéiceastáine", + "ru": "узбекский жестовый язык", + "tr": "Özbek İşaret Dili", + "uz-cyrl": "ўзбек имо-ишора тили", + "uz-latn": "o‘zbek imo-ishora tili" + }, + "ужя": { + "en": "Uzbek Sign Language", + "en-gb": "Uzbek Sign Language", + "ga": "teanga chomharthaíochta na hÚisbéiceastáine", + "ru": "узбекский жестовый язык", + "tr": "Özbek İşaret Dili", + "uz-cyrl": "ўзбек имо-ишора тили", + "uz-latn": "o‘zbek imo-ishora tili" + }, + "ўит": { + "en": "Uzbek Sign Language", + "en-gb": "Uzbek Sign Language", + "ga": "teanga chomharthaíochta na hÚisbéiceastáine", + "ru": "узбекский жестовый язык", + "tr": "Özbek İşaret Dili", + "uz-cyrl": "ўзбек имо-ишора тили", + "uz-latn": "o‘zbek imo-ishora tili" + }, + "o‘it": { + "en": "Uzbek Sign Language", + "en-gb": "Uzbek Sign Language", + "ga": "teanga chomharthaíochta na hÚisbéiceastáine", + "ru": "узбекский жестовый язык", + "tr": "Özbek İşaret Dili", + "uz-cyrl": "ўзбек имо-ишора тили", + "uz-latn": "o‘zbek imo-ishora tili" + }, + "scsl": { + "en": "Shanghai Sign Language", + "en-gb": "Shanghai Sign Language", + "ga": "teanga chomharthaíochta Shang-hai", + "ja": "上海手話", + "tr": "Şanghay İşaret Dili", + "zh_Hans": "上海手语", + "zh_Hant": "上海手語" + }, + "shsl": { + "en": "Shanghai Sign Language", + "en-gb": "Shanghai Sign Language", + "ga": "teanga chomharthaíochta Shang-hai", + "ja": "上海手話", + "tr": "Şanghay İşaret Dili", + "zh_Hans": "上海手语", + "zh_Hant": "上海手語" + }, + "pngsl": { + "anp": "पीएनजी सांकेतिक भाषा", + "ar": "لغة الإشارة لبابوا غينيا الجديدة", + "ary": "لغة لإشارة د پاپوا غينيا الجديدة", + "be-tarask": "папуанская жэставая мова", + "ca": "Llengua de signes de Papua Nova Guinea", + "de": "Papua-Neuguinea-Gebärdensprache", + "el": "Νοηματική γλώσσα της Παπούα Νέας Γουινέας", + "en": "Papua New Guinean Sign Language", + "en-ca": "Papua New Guinean Sign Language", + "en-gb": "Papua New Guinean Sign Language", + "eo": "Papu-Nov-Gvinea gestolingvo", + "es": "Lengua de signos de Papúa Nueva Guinea", + "fa": "زبان اشاره پاپوآ گینه نویی", + "fi": "papuauusiguinealainen viittomakieli", + "fr": "langue des signes papouasienne", + "ga": "teanga chomharthaíochta Nua-Ghuine Phapua", + "gl": "Lingua de sinais de Papúa-Nova Guinea", + "he": "שפת הסימנים של פפואה גינאה החדשה", + "hi": "पापुआ न्यू गिनी सांकेतिक भाषा", + "ilo": "Pagsasao a Senias ti Papua Baro a Guinea", + "ja": "パプア・ニューギニア手話", + "pt": "Língua de sinais da Papua-Nova Guiné", + "sk": "Papuánsky znakový jazyk", + "sl": "papuanski znakovni jezik", + "tok": "toki luka Papuwanijukini", + "tr": "Papua Yeni Gine İşaret Dili", + "tt": "Папуа — Яңа Гвинея ишарә теле", + "vec": "Łéngua dei segni de Pàpua Nova Guinea" + }, + "hzj": { + "bn": "ক্রোয়েশীয় ইশারা ভাষা", + "de": "Kroatische Gebärdensprache", + "el": "Κροατική νοηματική γλώσσα", + "en": "Croatian Sign Language", + "en-ca": "Croatian Sign Language", + "en-gb": "Croatian Sign Language", + "eo": "kroata signolingvo", + "et": "Horvaadi viipekeel", + "fa": "زبان اشاره کرواتی", + "fr": "langue des signes croate", + "ga": "teanga chomharthaíochta na Cróite", + "hr": "hrvatski znakovni jezik", + "ig": "Asụsụ Ogbi nke Croatia", + "ja": "クロアチア手話", + "lfn": "lingua de sinia corvatsce", + "nl": "Kroatische gebarentaal", + "pms": "Lenga dij segn croata", + "pt": "Língua de sinais croata", + "pt_BR": "Língua de sinais croata", + "ru": "хорватский жестовый язык", + "tok": "toki luka Lowasi", + "tr": "Hırvat İşaret Dili", + "tt": "хорват ишарә теле", + "uk": "хорватська мова жестів", + "zh": "克罗地亚手语" + }, + "sgsl": { + "en": "Singapore Sign Language", + "en-gb": "Singapore Sign Language", + "eo": "singapura signolingvo", + "fa": "زبان اشاره سنگاپوری", + "ga": "teanga chomharthaíochta Shingeapór", + "id": "Bahasa Isyarat Singapura", + "ja": "シンガポール手話", + "lfn": "lingua de sinia singapor", + "pms": "Lenga dij segn ëd Singapor", + "pt": "Língua de sinais de Singapura", + "tok": "toki luka Sinkapula", + "tr": "Singapor İşaret Dili", + "zh": "新加坡手语" + }, + "tal": { + "bn": "তানজানীয় সাংকেতিক ভাষাসমূহ", + "de": "Tansanische Gebärdensprache", + "en": "Tanzanian Sign Language", + "en-gb": "Tanzanian Sign Language", + "eo": "tanzania signolingvo", + "fa": "زبانهای اشاره تانزانیایی", + "fr": "langue des signes tanzanienne", + "ga": "teanga chomharthaíochta na Tansáine", + "ig": "Asụsụ Ndị Ogbi Tanzania", + "ja": "タンザニア手話", + "lfn": "lingua de sinia tanzanian", + "nl": "Tanziaanse gebarentaal", + "pms": "Lenga dij segn tanzanian-a", + "pt": "Língua de Sinais da Tanzânia", + "scn": "Lingua dî Signa Tanzania", + "sw": "Lugha ya Alama Tanzania", + "tok": "toki luka Tansanija", + "tr": "Tanzanya İşaret Dili", + "tt": "Танзания ишарә теле" + }, + "pjm": { + "bn": "পোলীয় ইশারা ভাষা", + "br": "yezh ar sinoù polonek", + "ca": "llengua de signes polonesa", + "de": "Polnische Gebärdensprache", + "el": "πολωνική νοηματική γλώσσα", + "en": "Polish Sign Language", + "en-gb": "Polish Sign Language", + "eo": "pola signolingvo", + "fa": "زبان اشاره لهستانی", + "fr": "langue des signes polonaise", + "ga": "teanga chomharthaíochta na Polainne", + "ja": "ポーランド手話", + "ku": "zimanê hêmayan ê polonî", + "ku-latn": "zimanê hêmayan ê polonî", + "lfn": "lingua de sinia polsce", + "nan": "Pho-lân Chhiú-gí", + "nl": "Pools gebarentaal", + "pl": "Polski Język Migowy", + "pms": "Lenga dij segn dla Polònia", + "ru": "польский жестовый язык", + "sl": "poljski znakovni jezik", + "tok": "toki luka Posuka", + "tr": "Polonya İşaret Dili", + "zh-tw": "波蘭手語", + "zh_Hans": "波兰手语", + "zh_Hant": "波蘭手語" + }, + "hsl": { + "bn": "হাউসা ইশারা ভাষা", + "de": "Hausa-Gebärdensprache", + "en": "Hausa Sign Language", + "en-gb": "Hausa Sign Language", + "eo": "haŭsa signolingvo", + "ff": "Hausa Sign Language", + "fr": "langue des signes haoussa", + "ga": "teanga chomharthaíochta Hásaise", + "ha": "Maganar hannu", + "hi": "हौसा सांकेतिक भाषा", + "ig": "Hausa Sign Language", + "ja": "ハウサ手話", + "lfn": "lingua de sinia hausa", + "lmo": "lèngua d'i sègn hausa", + "mt": "Lingwa tas-Sinjali Ħawsija", + "pa": "ਹੌਸਾ ਚਿਹਨ ਭਾਸ਼ਾ", + "pms": "lenga dij segn hausa", + "pt": "Língua Gestual Hausa", + "scn": "Lingua dî Signa Hausa", + "tr": "Hevsâ İşaret Dili" + }, + "lgp": { + "bn": "পর্তুগীজ ইশারা ভাষা", + "br": "yezh ar sinoù portugalek", + "ca": "llengua de signes portuguesa", + "cy": "Iaith Arwyddo Portiwgal", + "de": "Portugiesische Gebärdensprache", + "eml": "lèngva di sègn purtughéśa", + "en": "Portuguese Sign Language", + "en-gb": "Portuguese Sign Language", + "eo": "portugala signolingvo", + "es": "lengua de señas portuguesa", + "eu": "Portugalgo keinu hizkuntza", + "fa": "زبان اشاره پرتغالی", + "fi": "portugalilainen viittomakieli", + "fr": "langue des signes portugaise", + "fur": "lenghe dai segns portughêse", + "ga": "teanga chomharthaíochta na Portaingéile", + "id": "Bahasa Isyarat Portugis", + "it": "Lingua dei segni portoghese", + "ja": "ポルトガル手話", + "la": "lingua gesticulatoria Portugallensis", + "lfn": "lingua de sinia portuges", + "nb_NO": "portugisisk tegnspråk", + "nl": "Portugese gebarentaal", + "pms": "lenga dij segn portoghèisa", + "pnb": "پرتگالی سینت بولی", + "pt": "língua gestual portuguesa", + "sc": "Limba de sos Sinnos Portughesa", + "scn": "Lingua dî Signa Purtughisi", + "sco": "Portuguese Sign Leid", + "sl": "portugalski znakovni jezik", + "tok": "toki luka Potuke", + "tr": "Portekiz İşaret Dili", + "tt": "португал ишарә теле", + "zh": "葡萄牙语手语", + "zh_Hans": "葡萄牙语手语", + "zh_Hant": "葡萄牙語手語" + }, + "finssl": { + "bn": "ফিনল্যান্ড-সুয়েডীয় ইশারা ভাষা", + "cs": "Finsko-švédský znakový jazyk", + "de": "finnisch-schwedische Gebärdensprache", + "en": "Finland-Swedish Sign Language", + "en-gb": "Finland-Swedish Sign Language", + "eo": "finna-sveda gestolingvo", + "fa": "زبان اشاره فنلاند-سوئدی", + "fi": "suomenruotsalainen viittomakieli", + "fr": "langue des signes finno-suédoise", + "ga": "teanga chomharthaíochta Fhionlannach-Shualannach", + "ha": "Finland-Yaren Kurame na Sweden", + "he": "שפת הסימנים פינלנד-שוודית", + "hi": "फिनलैंड-स्वेडिश सांकेतिक भाषा", + "hr": "finsko-švedski znakovni jezik", + "it": "lingua dei segni svedese-finlandese", + "ja": "フィンランド=スウェーデン手話", + "nb_NO": "finlandssvensk tegnspråk", + "pms": "lenga dij segn finlandèisa-svedèisa", + "se": "suomaruoŧŧelaš seavagiella", + "sl": "finsko-švedski znakovni jezik", + "smn": "suomâruátálâš seevvimkielâ", + "sv": "finlandssvenskt teckenspråk", + "zh": "芬兰瑞典语手语", + "zh_Hans": "芬兰瑞典语手语", + "zh_Hant": "芬蘭瑞典語手語" + } } \ No newline at end of file diff --git a/src/assets/schemas/layerconfigmeta.json b/src/assets/schemas/layerconfigmeta.json index 6b7348b6a..3096381a5 100644 --- a/src/assets/schemas/layerconfigmeta.json +++ b/src/assets/schemas/layerconfigmeta.json @@ -11169,6 +11169,10 @@ "if": "value=public_bookcase", "then": "public_bookcase - A streetside cabinet with books, accessible to anyone" }, + { + "if": "value=railway", + "then": "railway - Railways and disused railways" + }, { "if": "value=railway_platforms", "then": "railway_platforms - Find every platform in the station, and the train routes that use them." @@ -12479,6 +12483,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -12534,10 +12542,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -13824,6 +13828,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -13879,10 +13887,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -15217,6 +15221,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -15272,10 +15280,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -16614,6 +16618,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -16669,10 +16677,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -18013,6 +18017,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -18068,10 +18076,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -19410,6 +19414,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -19465,10 +19473,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, diff --git a/src/assets/schemas/layoutconfigmeta.json b/src/assets/schemas/layoutconfigmeta.json index 1aca72836..4d54351f3 100644 --- a/src/assets/schemas/layoutconfigmeta.json +++ b/src/assets/schemas/layoutconfigmeta.json @@ -1048,6 +1048,10 @@ "if": "value=public_bookcase", "then": "public_bookcase (builtin) - A streetside cabinet with books, accessible to anyone" }, + { + "if": "value=railway", + "then": "railway (builtin) - Railways and disused railways" + }, { "if": "value=railway_platforms", "then": "railway_platforms (builtin) - Find every platform in the station, and the train routes that use them." @@ -13857,6 +13861,10 @@ "if": "value=public_bookcase", "then": "public_bookcase - A streetside cabinet with books, accessible to anyone" }, + { + "if": "value=railway", + "then": "railway - Railways and disused railways" + }, { "if": "value=railway_platforms", "then": "railway_platforms - Find every platform in the station, and the train routes that use them." @@ -15187,6 +15195,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -15242,10 +15254,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -16569,6 +16577,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -16624,10 +16636,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -18000,6 +18008,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -18055,10 +18067,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -19433,6 +19441,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -19488,10 +19500,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -20867,6 +20875,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -20922,10 +20934,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -22300,6 +22308,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -22355,10 +22367,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -35750,6 +35758,10 @@ "if": "value=public_bookcase", "then": "public_bookcase - A streetside cabinet with books, accessible to anyone" }, + { + "if": "value=railway", + "then": "railway - Railways and disused railways" + }, { "if": "value=railway_platforms", "then": "railway_platforms - Find every platform in the station, and the train routes that use them." @@ -37107,6 +37119,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -37162,10 +37178,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -38540,6 +38552,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -38595,10 +38611,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -40024,6 +40036,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -40079,10 +40095,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -41508,6 +41520,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -41563,10 +41579,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -42993,6 +43005,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -43048,10 +43064,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, @@ -44477,6 +44489,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -44532,10 +44548,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, diff --git a/src/assets/schemas/questionabletagrenderingconfigmeta.json b/src/assets/schemas/questionabletagrenderingconfigmeta.json index f917e7a60..e2e3ad6f0 100644 --- a/src/assets/schemas/questionabletagrenderingconfigmeta.json +++ b/src/assets/schemas/questionabletagrenderingconfigmeta.json @@ -625,6 +625,10 @@ "if": "value=direction", "then": "direction A geographical direction, in degrees. 0° is north, 90° is east, ... Will return a value between 0 (incl) and 360 (excl)." }, + { + "if": "value=distance", + "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" + }, { "if": "value=slope", "then": "slope Validates that the slope is a valid number.The accompanying input element uses the gyroscope and the compass to determine the correct incline. The sign of the incline will be set automatically. The bearing of the way is compared to the bearing of the compass, as such, the device knows if it is measuring in the forward or backward direction." @@ -680,10 +684,6 @@ { "if": "value=nsi", "then": "nsi Gives a list of possible suggestions for a brand or operator tag. Note: this is detected automatically; there is no need to explicitly set this" - }, - { - "if": "value=distance", - "then": "distance A geographical distance in meters (rounded at two points). Will give an extra minimap with a measurement tool. Arguments: [ zoomlevel, preferredBackgroundMapType (comma separated) ], e.g. `[\"21\", \"map,photo\"]" } ] }, diff --git a/src/assets/svg/North_arrow.svelte b/src/assets/svg/North_arrow.svelte index 7a6ee4266..727f31f16 100644 --- a/src/assets/svg/North_arrow.svelte +++ b/src/assets/svg/North_arrow.svelte @@ -1,4 +1,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/assets/translators.json b/src/assets/translators.json index 7bfec57bb..3914fdb0c 100644 --- a/src/assets/translators.json +++ b/src/assets/translators.json @@ -13,7 +13,7 @@ "contributor": "paunofu" }, { - "commits": 177, + "commits": 186, "contributor": "Anonymous" }, { @@ -34,11 +34,11 @@ }, { "commits": 72, - "contributor": "Midgard" + "contributor": "Supaplex" }, { - "commits": 71, - "contributor": "Supaplex" + "commits": 72, + "contributor": "Midgard" }, { "commits": 70, @@ -66,11 +66,11 @@ }, { "commits": 36, - "contributor": "Iago" + "contributor": "Lukáš Jelínek" }, { - "commits": 35, - "contributor": "Lukáš Jelínek" + "commits": 36, + "contributor": "Iago" }, { "commits": 34, diff --git a/src/index.css b/src/index.css index 3f5f17952..d1dc9a284 100644 --- a/src/index.css +++ b/src/index.css @@ -32,27 +32,28 @@ --low-interaction-background: #eeeeee; --low-interaction-background-50: #eeeeee90; --low-interaction-foreground: black; - --low-interaction-contrast: #ff00ff; --low-interaction-border: #dcdcdc; + --interactive-background: #dddddd; --interactive-foreground: black; - --interactive-contrast: #ff00ff; + --interactive-contrast: #cd1dcd; --interaction-border: #bfbfbf; - --button-background: #282828; + --button-background-primary: #191919; --button-background-hover: #484848; - --button-primary-background-hover: #353535; + --button-primary-background-hover: rgba(48, 47, 47, 0.94); --button-foreground: white; - --button-border-color: #F7F7F7; + --button-background: #fafafa; + --button-border: #B8B8B8; --disabled: #B8B8B8; --disabled-font: #B8B8B8; - --catch-detail-color: black; /*#3a3aeb;*/ - --catch-detail-foregroundcolor: white; - --catch-detail-color-contrast: #fb3afb; + --catch-detail-color: var(--background-color); + --catch-detail-foregroundcolor: var(--foreground-color); + --catch-detail-color-contrast: var(--interactive-contrast); --image-carousel-height: 350px; @@ -161,7 +162,7 @@ input[type="text"] { } .border-interactive { - border: 2px dashed var(--catch-detail-color-contrast); + border: 2px dashed var(--interactive-contrast); border-radius: 0.5rem; } @@ -198,16 +199,15 @@ button, .button { padding: 0.25rem 1rem; margin: 0.25rem; - background: var(--background-color); - border: 1px solid var(--button-background-hover); - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); - border-radius: 15px; - - background: var(--background-color); - transition: all 200ms; - + background: var(--button-background); + border: 2px solid var(--button-border); + border-radius: 7px; + transition: background-color 200ms; } +.low-interaction button{ + background: var(--background-color); +} .group > button { padding-right: 1rem !important; /*Flowbite workaround */ @@ -217,7 +217,13 @@ button.w-full { margin-left: 0; } -button:hover:not(.disabled):not(.as-link), .button:hover:not(.disabled):not(.as-link) { + +button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) { + background-color: var(--button-primary-background-hover); + border: 2px solid var(--interactive-contrast) +} + +button:hover:not(.disabled):not(.as-link):not(.primary), .button:hover:not(.disabled):not(.as-link):not(.primary) { background-color: var(--low-interaction-background); } @@ -232,13 +238,10 @@ button:focus, .button:focus { button.primary, .button.primary { color: var(--button-foreground); - background-color: var(--button-background); - border-color: var(--button-border-color); + background-color: var(--button-background-primary); + border: 2px solid var(--button-background-primary) } -button.primary:hover:not(.disabled), .button.primary:hover:not(.disabled) { - background-color: var(--button-primary-background-hover); -} button.disabled { border-color: var(--disabled-font); @@ -293,7 +296,7 @@ button.unstyled, .button-unstyled button { /******* Other input elements ******/ .hover-alert:hover { - color: var(--catch-detail-color-contrast) + color: var(--interactive-contrast) } .links-w-full a:not(.weblate-link), .links-w-full button.as-link { @@ -317,7 +320,7 @@ select { } select:hover { - border-color: var(--catch-detail-color-contrast); + border-color: var(--interactive-contrast); } .neutral-label { @@ -420,17 +423,6 @@ h2.group { background-color: var(--interactive-background); } -.information { - /* The class to convey important information which does _not_ denote an error... */ - background-color: var(--low-interaction-background); - color: var(--alert-foreground-color); - border-radius: 1em; - margin: 0.25em; - text-align: center; - padding: 0.15em 0.3em; - border: 3px dotted var(--catch-detail-color-contrast); -} - .low-interaction .interactive { background-color: var(--interactive-background); } diff --git a/src/service-worker/SWGenerated.ts b/src/service-worker/SWGenerated.ts index d59d482ce..954950bb6 100644 --- a/src/service-worker/SWGenerated.ts +++ b/src/service-worker/SWGenerated.ts @@ -1,4 +1,4 @@ export class SWGenerated { // generated by scripts/prepareServiceWorker.ts - static vNumber = "0.54.7" + static vNumber = "0.55.4" }
NameMap generation dateSizeZoom rangesActions + + + + + + + + + +