forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
<script lang="ts">
 | 
						|
 | 
						|
    import ImportFlow from "./ImportFlow.svelte";
 | 
						|
    import {PointImportFlowState} from "./PointImportFlowState";
 | 
						|
    import NewPointLocationInput from "../../BigComponents/NewPointLocationInput.svelte";
 | 
						|
    import LayerConfig from "../../../Models/ThemeConfig/LayerConfig";
 | 
						|
    import {UIEventSource} from "../../../Logic/UIEventSource";
 | 
						|
    import MapControlButton from "../../Base/MapControlButton.svelte";
 | 
						|
    import {Square3Stack3dIcon} from "@babeard/svelte-heroicons/solid";
 | 
						|
 | 
						|
    export let importFlow: PointImportFlowState
 | 
						|
 | 
						|
    const state = importFlow.state;
 | 
						|
 | 
						|
    const args = importFlow.args
 | 
						|
 | 
						|
    // The following variables are used for the map
 | 
						|
    const targetLayer: LayerConfig = state.layout.layers.find(l => l.id === args.targetLayer)
 | 
						|
    const snapToLayers: string[] | undefined = args.snap_onto_layers?.split(",")?.map(l => l.trim()) ?? []
 | 
						|
    const maxSnapDistance: number = Number(args.max_snap_distance ?? 25) ?? 25;
 | 
						|
 | 
						|
    const snappedTo: UIEventSource<string | undefined> = new UIEventSource<string | undefined>(undefined);
 | 
						|
 | 
						|
    const startCoordinate = {
 | 
						|
        lon: importFlow.startCoordinate[0],
 | 
						|
        lat: importFlow.startCoordinate[1]
 | 
						|
    }
 | 
						|
    const value: UIEventSource<{ lon: number, lat: number }> = new UIEventSource<{ lon: number; lat: number }>(
 | 
						|
        startCoordinate
 | 
						|
    );
 | 
						|
 | 
						|
 | 
						|
    async function onConfirm(): Promise<void> {
 | 
						|
        const importedId = await importFlow.onConfirm(
 | 
						|
            value.data,
 | 
						|
            snappedTo.data
 | 
						|
        )
 | 
						|
        state.selectedLayer.setData(targetLayer)
 | 
						|
        state.selectedElement.setData(state.indexedFeatures.featuresById.data.get(importedId))
 | 
						|
    }
 | 
						|
 | 
						|
</script>
 | 
						|
 | 
						|
 | 
						|
<ImportFlow {importFlow} on:confirm={onConfirm }>
 | 
						|
    <div class="relative" slot="map">
 | 
						|
        <div class="h-32">
 | 
						|
            <NewPointLocationInput coordinate={startCoordinate}
 | 
						|
                                   {maxSnapDistance}
 | 
						|
                                   {snapToLayers}
 | 
						|
                                   {snappedTo}
 | 
						|
                                   {state}
 | 
						|
                                   {targetLayer}
 | 
						|
                                   {value}
 | 
						|
            />
 | 
						|
        </div>
 | 
						|
        <MapControlButton on:click={() => state.guistate.backgroundLayerSelectionIsOpened.setData(true)} cls="absolute bottom-0">
 | 
						|
            <Square3Stack3dIcon class="w-6 h-6"/>
 | 
						|
        </MapControlButton>
 | 
						|
    </div>
 | 
						|
 | 
						|
</ImportFlow>
 |