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}",
            })
        })
    }
}