| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  | import {LayerDefinition} from "../LayerDefinition"; | 
					
						
							| 
									
										
										
										
											2020-07-16 16:08:51 +02:00
										 |  |  | import {And, Tag, TagsFilter, Or} from "../../Logic/TagsFilter"; | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  | import * as L from "leaflet"; | 
					
						
							| 
									
										
										
										
											2020-07-16 15:29:50 +02:00
										 |  |  | import BikeStationChain from "../Questions/bike/StationChain"; | 
					
						
							|  |  |  | import BikeStationPumpTools from "../Questions/bike/StationPumpTools"; | 
					
						
							|  |  |  | import BikeStationStand from "../Questions/bike/StationStand"; | 
					
						
							|  |  |  | import PumpManual from "../Questions/bike/PumpManual"; | 
					
						
							|  |  |  | import BikeStationOperator from "../Questions/bike/StationOperator"; | 
					
						
							|  |  |  | import BikeStationBrand from "../Questions/bike/StationBrand"; | 
					
						
							| 
									
										
										
										
											2020-07-16 09:54:32 +02:00
										 |  |  | import FixedText from "../Questions/FixedText"; | 
					
						
							| 
									
										
										
										
											2020-07-16 15:29:50 +02:00
										 |  |  | import PumpManometer from "../Questions/bike/PumpManometer"; | 
					
						
							| 
									
										
										
										
											2020-07-16 09:54:32 +02:00
										 |  |  | import {ImageCarouselWithUploadConstructor} from "../../UI/Image/ImageCarouselWithUpload"; | 
					
						
							| 
									
										
										
										
											2020-07-16 15:56:10 +02:00
										 |  |  | import PumpOperational from "../Questions/bike/PumpOperational"; | 
					
						
							| 
									
										
										
										
											2020-07-16 15:32:32 +02:00
										 |  |  | import PumpValves from "../Questions/bike/PumpValves"; | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  | import Translations from "../../UI/i18n/Translations"; | 
					
						
							| 
									
										
										
										
											2020-07-16 14:21:06 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-16 15:29:50 +02:00
										 |  |  | export default class BikeStations extends LayerDefinition { | 
					
						
							| 
									
										
										
										
											2020-07-16 16:08:51 +02:00
										 |  |  |     private readonly pump = new Tag("service:bicycle:pump", "yes"); | 
					
						
							|  |  |  |     private readonly pumpOperationalAny = new Tag("service:bicycle:pump:operational_status", "yes"); | 
					
						
							| 
									
										
										
										
											2020-07-17 12:00:52 +02:00
										 |  |  |     private readonly pumpOperationalOk = new Or([new Tag("service:bicycle:pump:operational_status", "yes"), new Tag("service:bicycle:pump:operational_status", "operational"), new Tag("service:bicycle:pump:operational_status", "ok"), new Tag("service:bicycle:pump:operational_status", "")]); | 
					
						
							| 
									
										
										
										
											2020-07-16 16:08:51 +02:00
										 |  |  |     private readonly tools = new Tag("service:bicycle:tools", "yes"); | 
					
						
							| 
									
										
										
										
											2020-07-16 14:21:06 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |     constructor() { | 
					
						
							|  |  |  |         super(); | 
					
						
							| 
									
										
										
										
											2020-07-21 01:13:51 +02:00
										 |  |  |         this.name = Translations.t.cyclofix.station.name.txt; | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |         this.icon = "./assets/wrench.svg"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.overpassFilter = new And([ | 
					
						
							|  |  |  |             new Tag("amenity", "bicycle_repair_station") | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.newElementTags = [ | 
					
						
							|  |  |  |             new Tag("amenity", "bicycle_repair_station") | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |         this.maxAllowedOverlapPercentage = 10; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this.minzoom = 13; | 
					
						
							|  |  |  |         this.style = this.generateStyleFunction(); | 
					
						
							| 
									
										
										
										
											2020-07-21 01:13:51 +02:00
										 |  |  |         this.title = new FixedText(Translations.t.cyclofix.station.title.txt) | 
					
						
							| 
									
										
										
										
											2020-07-16 09:54:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |         this.elementsToShow = [ | 
					
						
							| 
									
										
										
										
											2020-07-16 09:54:32 +02:00
										 |  |  |             new ImageCarouselWithUploadConstructor(), | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |             new BikeStationPumpTools(), | 
					
						
							| 
									
										
										
										
											2020-07-16 14:21:06 +02:00
										 |  |  |             new BikeStationChain().OnlyShowIf(this.tools), | 
					
						
							|  |  |  |             new BikeStationStand().OnlyShowIf(this.tools), | 
					
						
							| 
									
										
										
										
											2020-07-16 09:54:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-16 14:21:06 +02:00
										 |  |  |             new PumpManual().OnlyShowIf(this.pump), | 
					
						
							| 
									
										
										
										
											2020-07-16 15:29:50 +02:00
										 |  |  |             new PumpManometer().OnlyShowIf(this.pump), | 
					
						
							| 
									
										
										
										
											2020-07-16 15:32:32 +02:00
										 |  |  |             new PumpValves().OnlyShowIf(this.pump), | 
					
						
							| 
									
										
										
										
											2020-07-16 15:56:10 +02:00
										 |  |  |             new PumpOperational().OnlyShowIf(this.pump), | 
					
						
							| 
									
										
										
										
											2020-07-16 09:54:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-20 23:43:42 +02:00
										 |  |  |             // new BikeStationOperator(),
 | 
					
						
							| 
									
										
										
										
											2020-07-16 15:29:50 +02:00
										 |  |  |             // new BikeStationBrand()   DISABLED
 | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |         ]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private generateStyleFunction() { | 
					
						
							|  |  |  |         const self = this; | 
					
						
							|  |  |  |         return function (properties: any) { | 
					
						
							| 
									
										
										
										
											2020-07-16 15:56:10 +02:00
										 |  |  |             const hasPump = self.pump.matchesProperties(properties) | 
					
						
							| 
									
										
										
										
											2020-07-17 12:00:52 +02:00
										 |  |  |             const isOperational = self.pumpOperationalOk.matchesProperties(properties) | 
					
						
							| 
									
										
										
										
											2020-07-16 15:56:10 +02:00
										 |  |  |             const hasTools = self.tools.matchesProperties(properties) | 
					
						
							|  |  |  |             let iconName = "" | 
					
						
							|  |  |  |             if (hasPump) { | 
					
						
							|  |  |  |                 if (hasTools) { | 
					
						
							|  |  |  |                     iconName = "repair_station_pump.svg" | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     if (isOperational) { | 
					
						
							|  |  |  |                         iconName = "pump.svg" | 
					
						
							|  |  |  |                     } else { | 
					
						
							|  |  |  |                         iconName = "pump_broken.svg" | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2020-07-20 17:30:02 +02:00
										 |  |  |                 if (!self.pump.matchesProperties(properties)) { | 
					
						
							|  |  |  |                     iconName = "repair_station.svg" | 
					
						
							|  |  |  |                 } else { | 
					
						
							|  |  |  |                     iconName = "repair_station.svg" | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2020-07-16 15:56:10 +02:00
										 |  |  |             } | 
					
						
							|  |  |  |             const iconUrl = `./assets/bike/${iconName}` | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |             return { | 
					
						
							|  |  |  |                 color: "#00bb00", | 
					
						
							| 
									
										
										
										
											2020-07-16 15:29:50 +02:00
										 |  |  |                 icon: L.icon({ | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |                     iconUrl: iconUrl, | 
					
						
							| 
									
										
										
										
											2020-07-20 16:16:22 +02:00
										 |  |  |                     iconSize: [50, 50], | 
					
						
							|  |  |  |                     iconAnchor: [25,50] | 
					
						
							| 
									
										
										
										
											2020-07-13 17:16:12 +02:00
										 |  |  |                 }) | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-07-16 15:29:50 +02:00
										 |  |  | } |