| 
									
										
										
										
											2022-11-02 14:44:06 +01:00
										 |  |  | import Translations from "../i18n/Translations" | 
					
						
							|  |  |  | import { SubtleButton } from "../Base/SubtleButton" | 
					
						
							|  |  |  | import Svg from "../../Svg" | 
					
						
							|  |  |  | import Combine from "../Base/Combine" | 
					
						
							|  |  |  | import { GeoOperations } from "../../Logic/GeoOperations" | 
					
						
							|  |  |  | import { Utils } from "../../Utils" | 
					
						
							| 
									
										
										
										
											2023-03-28 05:13:48 +02:00
										 |  |  | import { SpecialVisualization, SpecialVisualizationState } from "../SpecialVisualization" | 
					
						
							| 
									
										
										
										
											2023-04-20 18:58:31 +02:00
										 |  |  | import { Store, UIEventSource } from "../../Logic/UIEventSource" | 
					
						
							|  |  |  | import { Feature, LineString } from "geojson" | 
					
						
							|  |  |  | import LayerConfig from "../../Models/ThemeConfig/LayerConfig" | 
					
						
							| 
									
										
										
										
											2022-10-28 04:33:05 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | export class ExportAsGpxViz implements SpecialVisualization { | 
					
						
							|  |  |  |     funcName = "export_as_gpx" | 
					
						
							|  |  |  |     docs = "Exports the selected feature as GPX-file" | 
					
						
							|  |  |  |     args = [] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-20 18:58:31 +02:00
										 |  |  |     constr( | 
					
						
							|  |  |  |         state: SpecialVisualizationState, | 
					
						
							|  |  |  |         tagSource: UIEventSource<Record<string, string>>, | 
					
						
							|  |  |  |         argument: string[], | 
					
						
							|  |  |  |         feature: Feature, | 
					
						
							|  |  |  |         layer: LayerConfig | 
					
						
							|  |  |  |     ) { | 
					
						
							| 
									
										
										
										
											2022-10-28 04:33:05 +02:00
										 |  |  |         const t = Translations.t.general.download | 
					
						
							| 
									
										
										
										
											2023-04-20 18:58:31 +02:00
										 |  |  |         if (feature.geometry.type !== "LineString") { | 
					
						
							|  |  |  |             return undefined | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-10-28 04:33:05 +02:00
										 |  |  |         return new SubtleButton( | 
					
						
							| 
									
										
										
										
											2023-05-08 01:55:21 +02:00
										 |  |  |             Svg.download_svg(), | 
					
						
							| 
									
										
										
										
											2022-10-28 04:33:05 +02:00
										 |  |  |             new Combine([ | 
					
						
							|  |  |  |                 t.downloadFeatureAsGpx.SetClass("font-bold text-lg"), | 
					
						
							|  |  |  |                 t.downloadGpxHelper.SetClass("subtle"), | 
					
						
							|  |  |  |             ]).SetClass("flex flex-col") | 
					
						
							|  |  |  |         ).onClick(() => { | 
					
						
							|  |  |  |             console.log("Exporting as GPX!") | 
					
						
							|  |  |  |             const tags = tagSource.data | 
					
						
							| 
									
										
										
										
											2023-03-28 05:13:48 +02:00
										 |  |  |             const title = layer.title?.GetRenderValue(tags)?.Subs(tags)?.txt ?? "gpx_track" | 
					
						
							| 
									
										
										
										
											2023-04-20 18:58:31 +02:00
										 |  |  |             const gpx = GeoOperations.toGpx(<Feature<LineString>>feature, title) | 
					
						
							| 
									
										
										
										
											2022-11-02 14:44:06 +01:00
										 |  |  |             Utils.offerContentsAsDownloadableFile(gpx, title + "_mapcomplete_export.gpx", { | 
					
						
							|  |  |  |                 mimetype: "{gpx=application/gpx+xml}", | 
					
						
							|  |  |  |             }) | 
					
						
							| 
									
										
										
										
											2022-10-28 04:33:05 +02:00
										 |  |  |         }) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |