| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  | import Combine from "../Base/Combine"; | 
					
						
							|  |  |  | import ScrollableFullScreen from "../Base/ScrollableFullScreen"; | 
					
						
							|  |  |  | import Translations from "../i18n/Translations"; | 
					
						
							|  |  |  | import AttributionPanel from "./AttributionPanel"; | 
					
						
							|  |  |  | import State from "../../State"; | 
					
						
							|  |  |  | import ContributorCount from "../../Logic/ContributorCount"; | 
					
						
							|  |  |  | import Toggle from "../Input/Toggle"; | 
					
						
							|  |  |  | import MapControlButton from "../MapControlButton"; | 
					
						
							|  |  |  | import Svg from "../../Svg"; | 
					
						
							|  |  |  | import AllDownloads from "./AllDownloads"; | 
					
						
							|  |  |  | import FilterView from "./FilterView"; | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  | import {UIEventSource} from "../../Logic/UIEventSource"; | 
					
						
							|  |  |  | import FeaturePipeline from "../../Logic/FeatureSource/FeaturePipeline"; | 
					
						
							|  |  |  | import Loc from "../../Models/Loc"; | 
					
						
							| 
									
										
										
										
											2021-09-28 17:30:48 +02:00
										 |  |  | import {BBox} from "../../Logic/BBox"; | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export default class LeftControls extends Combine { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  |     constructor(state: {featurePipeline: FeaturePipeline, currentBounds: UIEventSource<BBox>, locationControl: UIEventSource<Loc>}) { | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const toggledCopyright = new ScrollableFullScreen( | 
					
						
							|  |  |  |             () => Translations.t.general.attribution.attributionTitle.Clone(), | 
					
						
							|  |  |  |             () => | 
					
						
							|  |  |  |                 new AttributionPanel( | 
					
						
							|  |  |  |                     State.state.layoutToUse, | 
					
						
							| 
									
										
										
										
											2021-09-21 02:10:42 +02:00
										 |  |  |                     new ContributorCount(state).Contributors | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  |                 ), | 
					
						
							|  |  |  |             undefined | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  |         const copyrightButton = new Toggle( | 
					
						
							|  |  |  |             toggledCopyright, | 
					
						
							| 
									
										
										
										
											2021-07-28 18:20:59 +02:00
										 |  |  |             new MapControlButton(Svg.copyright_svg()) | 
					
						
							|  |  |  |                 .onClick(() => toggledCopyright.isShown.setData(true)), | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  |             toggledCopyright.isShown | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |             .SetClass("p-0.5"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const toggledDownload = new Toggle( | 
					
						
							|  |  |  |             new AllDownloads( | 
					
						
							|  |  |  |                 State.state.downloadControlIsOpened | 
					
						
							|  |  |  |             ).SetClass("block p-1 rounded-full"), | 
					
						
							| 
									
										
										
										
											2021-07-28 18:20:59 +02:00
										 |  |  |             new MapControlButton(Svg.download_svg()) | 
					
						
							|  |  |  |                 .onClick(() => State.state.downloadControlIsOpened.setData(true)), | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  |             State.state.downloadControlIsOpened | 
					
						
							| 
									
										
										
										
											2021-07-28 18:20:59 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const downloadButtonn = new Toggle( | 
					
						
							|  |  |  |             toggledDownload, | 
					
						
							|  |  |  |             undefined, | 
					
						
							|  |  |  |             State.state.featureSwitchEnableExport.map(downloadEnabled => downloadEnabled || State.state.featureSwitchExportAsPdf.data, | 
					
						
							|  |  |  |                 [State.state.featureSwitchExportAsPdf]) | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const toggledFilter = new Toggle( | 
					
						
							|  |  |  |             new ScrollableFullScreen( | 
					
						
							|  |  |  |                 () => Translations.t.general.layerSelection.title.Clone(), | 
					
						
							|  |  |  |                 () => | 
					
						
							|  |  |  |                     new FilterView(State.state.filteredLayers).SetClass( | 
					
						
							|  |  |  |                         "block p-1 rounded-full" | 
					
						
							|  |  |  |                     ), | 
					
						
							|  |  |  |                 undefined, | 
					
						
							|  |  |  |                 State.state.filterIsOpened | 
					
						
							|  |  |  |             ), | 
					
						
							| 
									
										
										
										
											2021-07-28 18:20:59 +02:00
										 |  |  |             new MapControlButton(Svg.filter_svg()) | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  |                 .onClick(() => State.state.filterIsOpened.setData(true)), | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  |             State.state.filterIsOpened | 
					
						
							| 
									
										
										
										
											2021-07-28 18:20:59 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         const filterButton = new Toggle( | 
					
						
							|  |  |  |             toggledFilter, | 
					
						
							|  |  |  |             undefined, | 
					
						
							|  |  |  |             State.state.featureSwitchFilter | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         State.state.locationControl.addCallback(() => { | 
					
						
							|  |  |  |             // Close the layer selection when the map is moved
 | 
					
						
							|  |  |  |             toggledDownload.isEnabled.setData(false); | 
					
						
							|  |  |  |             copyrightButton.isEnabled.setData(false); | 
					
						
							|  |  |  |             toggledFilter.isEnabled.setData(false); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         State.state.selectedElement.addCallbackAndRunD((_) => { | 
					
						
							|  |  |  |             toggledDownload.isEnabled.setData(false); | 
					
						
							|  |  |  |             copyrightButton.isEnabled.setData(false); | 
					
						
							|  |  |  |             toggledFilter.isEnabled.setData(false); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |         super([filterButton, | 
					
						
							|  |  |  |             downloadButtonn, | 
					
						
							|  |  |  |             copyrightButton]) | 
					
						
							| 
									
										
										
										
											2021-09-09 00:05:51 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-28 16:48:59 +02:00
										 |  |  |         this.SetClass("flex flex-col") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |