forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			98 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
<script lang="ts">
 | 
						|
 | 
						|
    import Loading from "../Base/Loading.svelte";
 | 
						|
    import Translations from "../i18n/Translations";
 | 
						|
    import Tr from "../Base/Tr.svelte";
 | 
						|
    import DownloadHelper from "./DownloadHelper";
 | 
						|
    import DownloadButton from "./DownloadButton.svelte";
 | 
						|
    import {GeoOperations} from "../../Logic/GeoOperations";
 | 
						|
    import {SvgToPdf} from "../../Utils/svgToPdf";
 | 
						|
    import ThemeViewState from "../../Models/ThemeViewState";
 | 
						|
    import DownloadPdf from "./DownloadPdf.svelte";
 | 
						|
 | 
						|
    export let state: ThemeViewState
 | 
						|
    let isLoading = state.dataIsLoading
 | 
						|
 | 
						|
    const t = Translations.t.general.download
 | 
						|
 | 
						|
    const downloadHelper = new DownloadHelper(state)
 | 
						|
 | 
						|
    let metaIsIncluded = false
 | 
						|
    const name = state.layout.id
 | 
						|
 | 
						|
 | 
						|
    function offerSvg(): string {
 | 
						|
        const maindiv = document.getElementById("maindiv")
 | 
						|
        const layers = state.layout.layers.filter((l) => l.source !== null)
 | 
						|
        return downloadHelper.asSvg({
 | 
						|
            layers,
 | 
						|
            mapExtent: state.mapProperties.bounds.data,
 | 
						|
            width: maindiv.offsetWidth,
 | 
						|
            height: maindiv.offsetHeight,
 | 
						|
        })
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
</script>
 | 
						|
 | 
						|
 | 
						|
{#if $isLoading}
 | 
						|
    <Loading/>
 | 
						|
{:else}
 | 
						|
 | 
						|
    <div class="w-full flex flex-col"></div>
 | 
						|
    <h3>
 | 
						|
        <Tr t={t.title}/>
 | 
						|
    </h3>
 | 
						|
 | 
						|
    <DownloadButton {state}
 | 
						|
                    extension="geojson"
 | 
						|
                    mimetype="application/vnd.geo+json"
 | 
						|
                    construct={(geojson) => JSON.stringify(geojson)}
 | 
						|
                    mainText={t.downloadGeojson}
 | 
						|
                    helperText={t.downloadGeoJsonHelper}
 | 
						|
                    {metaIsIncluded}/>
 | 
						|
 | 
						|
    <DownloadButton {state}
 | 
						|
                    extension="csv"
 | 
						|
                    mimetype="text/csv"
 | 
						|
                    construct={(geojson) => GeoOperations.toCSV(geojson)}
 | 
						|
                    mainText={t.downloadCSV}
 | 
						|
                    helperText={t.downloadCSVHelper}
 | 
						|
                    {metaIsIncluded}/>
 | 
						|
 | 
						|
 | 
						|
    <label class="mb-8 mt-2">
 | 
						|
        <input type="checkbox" bind:value={metaIsIncluded}>
 | 
						|
        <Tr t={t.includeMetaData}/>
 | 
						|
    </label>
 | 
						|
 | 
						|
    <DownloadButton {state} {metaIsIncluded}
 | 
						|
                    extension="svg"
 | 
						|
                    mimetype="image/svg+xml"
 | 
						|
                    mainText={t.downloadAsSvg}
 | 
						|
                    helperText={t.downloadAsSvgHelper}
 | 
						|
                    construct={offerSvg}
 | 
						|
    />
 | 
						|
 | 
						|
    <DownloadButton {state} {metaIsIncluded}
 | 
						|
                    extension="png"
 | 
						|
                    mimetype="image/png"
 | 
						|
                    mainText={t.downloadAsPng}
 | 
						|
                    helperText={t.downloadAsPngHelper}
 | 
						|
                    construct={_ => state.mapProperties.exportAsPng(4)}
 | 
						|
    />
 | 
						|
 | 
						|
 | 
						|
            <div class="flex flex-col">
 | 
						|
                {#each Object.keys(SvgToPdf.templates) as key}
 | 
						|
                    {#if SvgToPdf.templates[key].isPublic}
 | 
						|
                        <DownloadPdf {state} templateName={key}/>
 | 
						|
                    {/if}
 | 
						|
                {/each}
 | 
						|
            </div>
 | 
						|
 | 
						|
 | 
						|
    <Tr cls="link-underline" t={t.licenseInfo}/>
 | 
						|
{/if}
 | 
						|
 |