forked from MapComplete/MapComplete
Fix: don't crash if an unselected element is selected (by not selecting it)
This commit is contained in:
parent
b10d999b05
commit
981b412180
2 changed files with 16 additions and 3 deletions
|
@ -32,11 +32,13 @@ export class WithSelectedElementState extends UserMapFeatureswitchState {
|
|||
if (lastClick.mode !== "left") {
|
||||
return
|
||||
}
|
||||
this.setSelectedElement(lastClick.nearestFeature)
|
||||
const nearestFeature = lastClick.nearestFeature
|
||||
this.setSelectedElement(nearestFeature)
|
||||
})
|
||||
|
||||
// Add the selected element to the recently visited history
|
||||
this.selectedElement.addCallbackD((selected) => {
|
||||
console.trace("Selected element is", selected)
|
||||
const [osm_type, osm_id] = selected.properties.id.split("/")
|
||||
const [lon, lat] = GeoOperations.centerpointCoordinates(selected)
|
||||
const layer = this.theme.getMatchingLayer(selected.properties)
|
||||
|
@ -65,12 +67,21 @@ export class WithSelectedElementState extends UserMapFeatureswitchState {
|
|||
}
|
||||
|
||||
protected setSelectedElement(feature: Feature) {
|
||||
if (!feature) {
|
||||
this.selectedElement.setData(undefined)
|
||||
return
|
||||
}
|
||||
const layer = this.theme.getMatchingLayer(feature?.properties)
|
||||
if (layer?.title === undefined) {
|
||||
console.log("Not selecting feature", feature, ": no title (or no matching layer) found, unselectable element")
|
||||
return
|
||||
}
|
||||
|
||||
const current = this.selectedElement.data
|
||||
if (
|
||||
current?.properties?.id !== undefined &&
|
||||
current.properties.id === feature?.properties?.id
|
||||
) {
|
||||
console.log("Not setting selected, same id", current, feature)
|
||||
return // already set
|
||||
}
|
||||
this.selectedElement.setData(feature)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<script lang="ts">
|
||||
import type { Feature } from "geojson"
|
||||
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
|
||||
import { Store, UIEventSource } from "../../Logic/UIEventSource"
|
||||
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
|
||||
import type { SpecialVisualizationState } from "../SpecialVisualization"
|
||||
import TagRenderingAnswer from "../Popup/TagRendering/TagRenderingAnswer.svelte"
|
||||
|
@ -35,7 +35,9 @@
|
|||
<!-- Title element and title icons-->
|
||||
<h3 class="m-0">
|
||||
<a href={`#${$tags.id}`}>
|
||||
{#if layer.title}
|
||||
<TagRenderingAnswer config={layer.title} {selectedElement} {state} {tags} {layer} />
|
||||
{/if}
|
||||
</a>
|
||||
</h3>
|
||||
<div
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue