From c4ba9f7879bf2e0b7303eb21b649d1304c8346b8 Mon Sep 17 00:00:00 2001 From: Janne Forsman Date: Mon, 19 May 2025 15:14:35 +0300 Subject: [PATCH] fix: non clustered features edit link was not working in FeatureInfo component Refs: LIIK-773 --- map-view/src/common/MapUtils.ts | 11 +++++++++++ map-view/src/components/FeatureInfo.tsx | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/map-view/src/common/MapUtils.ts b/map-view/src/common/MapUtils.ts index f42b4ab9..9766ec63 100644 --- a/map-view/src/common/MapUtils.ts +++ b/map-view/src/common/MapUtils.ts @@ -3,6 +3,7 @@ import { Fill, Icon, Stroke, Style, Circle as CircleStyle } from "ol/style"; import { FeatureLike } from "ol/Feature"; import RenderFeature from "ol/render/Feature"; import { Coordinate } from "ol/coordinate"; +import { Feature, LayerConfig } from "../models"; const defaultFill = new Fill({ color: "magenta" }); const defaultStroke = new Stroke({ @@ -141,3 +142,13 @@ export function isCoordinateInsideFeature(coordinate: Coordinate, geometry: Geom return false; } } + +export function getFeatureAppName(feature: Feature, overlayConfig: LayerConfig) { + const name_from_feat = feature["app_name"]; + if (name_from_feat) { + return name_from_feat; + } + const featureType: string = feature["id_"].split(".")[0]; + const feature_layer = overlayConfig["layers"].find((l) => l.identifier === featureType); + return feature_layer ? feature_layer["app_name"] : "traffic_control"; +} diff --git a/map-view/src/components/FeatureInfo.tsx b/map-view/src/components/FeatureInfo.tsx index 75fe8b9f..da667267 100644 --- a/map-view/src/components/FeatureInfo.tsx +++ b/map-view/src/components/FeatureInfo.tsx @@ -12,6 +12,7 @@ import React from "react"; import { APIBaseUrl } from "../consts"; import { Feature, MapConfig } from "../models"; import { withTranslation, WithTranslation } from "react-i18next"; +import { getFeatureAppName } from "../common/MapUtils"; const styles = (theme: Theme) => createStyles({ @@ -75,7 +76,7 @@ class FeatureInfo extends React.Component { } getAdminLink(feature: Feature, featureTypeEditMapping: Record) { - const app_name = feature["app_name"]; + const app_name = getFeatureAppName(feature, this.props.mapConfig.overlayConfig); const featureTypeEditName = this.getFeatureTypeEditName(this.getFeatureType(feature), featureTypeEditMapping); const featureId = feature.getProperties().id; return `${APIBaseUrl}/admin/${app_name}/${featureTypeEditName.replace(/_/g, "")}/${featureId}/change`;