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 } from "../SpecialVisualization" export class ExportAsGpxViz implements SpecialVisualization { funcName = "export_as_gpx" docs = "Exports the selected feature as GPX-file" args = [] constr(state, tagSource) { const t = Translations.t.general.download return new SubtleButton( Svg.download_ui(), 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 feature = state.allElements.ContainingFeatures.get(tags.id) const matchingLayer = state?.layoutToUse?.getMatchingLayer(tags) const gpx = GeoOperations.AsGpx(feature, matchingLayer) const title = matchingLayer.title?.GetRenderValue(tags)?.Subs(tags)?.txt ?? "gpx_track" Utils.offerContentsAsDownloadableFile(gpx, title + "_mapcomplete_export.gpx", { mimetype: "{gpx=application/gpx+xml}", }) }) } }