| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  | import { LayerDefinition } from "../LayerDefinition"; | 
					
						
							|  |  |  | import Translations from "../../UI/i18n/Translations"; | 
					
						
							| 
									
										
										
										
											2020-07-29 13:16:21 +02:00
										 |  |  | import {And, Tag, Or} from "../../Logic/TagsFilter"; | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  | import FixedText from "../Questions/FixedText"; | 
					
						
							|  |  |  | import { ImageCarouselWithUploadConstructor } from "../../UI/Image/ImageCarouselWithUpload"; | 
					
						
							|  |  |  | import ShopRetail from "../Questions/bike/ShopRetail"; | 
					
						
							|  |  |  | import ShopPump from "../Questions/bike/ShopPump"; | 
					
						
							|  |  |  | import ShopRental from "../Questions/bike/ShopRental"; | 
					
						
							|  |  |  | import ShopRepair from "../Questions/bike/ShopRepair"; | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  | import ShopDiy from "../Questions/bike/ShopDiy"; | 
					
						
							|  |  |  | import ShopName from "../Questions/bike/ShopName"; | 
					
						
							|  |  |  | import ShopSecondHand from "../Questions/bike/ShopSecondHand"; | 
					
						
							|  |  |  | import { TagRenderingOptions } from "../TagRendering"; | 
					
						
							| 
									
										
										
										
											2020-07-27 00:14:41 +02:00
										 |  |  | import {PhoneNumberQuestion} from "../Questions/PhoneNumberQuestion"; | 
					
						
							| 
									
										
										
										
											2020-07-29 13:16:21 +02:00
										 |  |  | import Website from "../Questions/Website"; | 
					
						
							| 
									
										
										
										
											2020-07-29 19:02:36 +02:00
										 |  |  | import {EmailQuestion} from "../Questions/EmailQuestion"; | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default class BikeShops extends LayerDefinition { | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |     private readonly sellsBikes = new Tag("service:bicycle:retail", "yes") | 
					
						
							|  |  |  |     private readonly repairsBikes = new Tag("service:bicycle:repair", "yes") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |     constructor() { | 
					
						
							|  |  |  |         super(); | 
					
						
							| 
									
										
										
										
											2020-07-21 23:31:41 +02:00
										 |  |  |         this.name = Translations.t.cyclofix.shop.name | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |         this.icon = "./assets/bike/repair_shop.svg" | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |         this.overpassFilter = new Tag("shop", "bicycle"); | 
					
						
							| 
									
										
										
										
											2020-07-29 18:35:46 +02:00
										 |  |  |         this.presets = [{ | 
					
						
							|  |  |  |             title: Translations.t.cyclofix.shop.title, | 
					
						
							|  |  |  |             icon: "/assets/bike/repair_shop.svg", | 
					
						
							|  |  |  |             tags: [ | 
					
						
							|  |  |  |                 new Tag("shop", "bicycle"), | 
					
						
							|  |  |  |             ] | 
					
						
							|  |  |  |         }] | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |         this.maxAllowedOverlapPercentage = 10 | 
					
						
							| 
									
										
										
										
											2020-07-22 00:50:30 +02:00
										 |  |  |         this.wayHandling = LayerDefinition.WAYHANDLING_CENTER_AND_WAY | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         this.minzoom = 13; | 
					
						
							|  |  |  |         this.style = this.generateStyleFunction(); | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |         this.title = new TagRenderingOptions({ | 
					
						
							|  |  |  |             mappings: [ | 
					
						
							| 
									
										
										
										
											2020-07-21 23:31:41 +02:00
										 |  |  |                 {k: new And([new Tag("name", "*"), this.sellsBikes]), txt: Translations.t.cyclofix.shop.titleShopNamed}, | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     k: new And([new Tag("name", "*"), new Tag("service:bicycle:retail", "")]), | 
					
						
							|  |  |  |                     txt: Translations.t.cyclofix.shop.titleShop | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     k: new And([new Tag("name", "*"), new Tag("service:bicycle:retail", "no")]), | 
					
						
							|  |  |  |                     txt: Translations.t.cyclofix.shop.titleRepairNamed | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 {k: this.sellsBikes, txt: Translations.t.cyclofix.shop.titleShop}, | 
					
						
							|  |  |  |                 {k: new Tag("service:bicycle:retail", " "), txt: Translations.t.cyclofix.shop.title}, | 
					
						
							| 
									
										
										
										
											2020-07-21 15:42:55 +02:00
										 |  |  |                 {k: new Tag("service:bicycle:retail", "no"), txt: Translations.t.cyclofix.shop.titleRepair}, | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |             ] | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |          | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |         this.elementsToShow = [ | 
					
						
							|  |  |  |             new ImageCarouselWithUploadConstructor(), | 
					
						
							| 
									
										
										
										
											2020-07-21 23:31:41 +02:00
										 |  |  |             new ShopName(), | 
					
						
							| 
									
										
										
										
											2020-07-29 13:16:21 +02:00
										 |  |  |             new Website("{name}"), | 
					
						
							| 
									
										
										
										
											2020-07-29 19:02:36 +02:00
										 |  |  |             new PhoneNumberQuestion("{name}"), | 
					
						
							|  |  |  |             new EmailQuestion("{name}"), | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |             new ShopRetail(), | 
					
						
							|  |  |  |             new ShopRental(), | 
					
						
							|  |  |  |             new ShopRepair(), | 
					
						
							|  |  |  |             new ShopPump(), | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |             new ShopDiy(), | 
					
						
							|  |  |  |             new ShopSecondHand() | 
					
						
							|  |  |  |         ] | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private generateStyleFunction() { | 
					
						
							|  |  |  |         const self = this; | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |         return function (tags: any) { | 
					
						
							|  |  |  |             let icon = "assets/bike/repair_shop.svg"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (self.sellsBikes.matchesProperties(tags)) { | 
					
						
							|  |  |  |                 icon = "assets/bike/shop.svg"; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |             return { | 
					
						
							|  |  |  |                 color: "#00bb00", | 
					
						
							| 
									
										
										
										
											2020-07-26 02:01:34 +02:00
										 |  |  |                 icon: { | 
					
						
							| 
									
										
										
										
											2020-07-23 14:46:25 +02:00
										 |  |  |                     iconUrl: icon, | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |                     iconSize: [50, 50], | 
					
						
							|  |  |  |                     iconAnchor: [25, 50] | 
					
						
							| 
									
										
										
										
											2020-07-26 02:01:34 +02:00
										 |  |  |                 } | 
					
						
							| 
									
										
										
										
											2020-07-21 12:14:56 +02:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | } |