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" import {SpecialVisualization, SpecialVisualizationState} from "../SpecialVisualization" import {UIEventSource} from "../../Logic/UIEventSource" import {Feature, LineString} from "geojson" import LayerConfig from "../../Models/ThemeConfig/LayerConfig" export class ExportAsGpxViz implements SpecialVisualization { funcName = "export_as_gpx" docs = "Exports the selected feature as GPX-file" args = [] constr( state: SpecialVisualizationState, tagSource: UIEventSource>, argument: string[], feature: Feature, layer: LayerConfig ) { const t = Translations.t.general.download if (feature.geometry.type !== "LineString") { return undefined } return new SubtleButton( Svg.download_svg(), 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 const title = layer.title?.GetRenderValue(tags)?.Subs(tags)?.txt ?? "gpx_track" const gpx = GeoOperations.toGpx(>feature, title) Utils.offerContentsAsDownloadableFile(gpx, title + "_mapcomplete_export.gpx", { mimetype: "{gpx=application/gpx+xml}", }) }) } }