fix: Die Logik für die Alarmanzeige wurde angepasst: Jetzt wird das Alarm-Icon nur angezeigt, wenn ein aktiver Alarm existiert und für diesen auch ein passender Link im StaticDistrict vorhanden ist – unabhängig von der Reihenfolge. Damit wird der Bug behoben, dass das Icon manchmal nicht erscheint, obwohl ein Alarm mit Link existiert.

This commit is contained in:
ISA
2025-09-19 12:29:33 +02:00
parent 3d0ce4a2b4
commit 4f0527e8a9
6 changed files with 22 additions and 20 deletions

View File

@@ -152,27 +152,29 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
let alarmLink = "";
let alarmText = "";
let alarmIdLD = null;
// Hilfsfunktion: alle aktiven Alarme sammeln
let alarmList = [];
if (Array.isArray(gisStationsStatusDistrict)) {
const alarmObj = gisStationsStatusDistrict.find(item => item?.Alarm === 1);
hasActiveAlarm = !!alarmObj;
alarmIdLD = alarmObj?.IdLD;
alarmText = alarmObj?.Me || "Alarm aktiv";
alarmList = gisStationsStatusDistrict.filter(item => item?.Alarm === 1);
} else if (gisStationsStatusDistrict?.Statis) {
const alarmObj = gisStationsStatusDistrict.Statis.find(item => item?.Alarm === 1);
hasActiveAlarm = !!alarmObj;
alarmIdLD = alarmObj?.IdLD;
alarmText = alarmObj?.Me || "Alarm aktiv";
alarmList = gisStationsStatusDistrict.Statis.filter(item => item?.Alarm === 1);
}
if (hasActiveAlarm && alarmIdLD) {
const staticObj = pointsArr.find(p => p.IdLD === alarmIdLD);
// Suche das erste Alarmobjekt, das auch einen Link im StaticDistrict hat
let found = false;
for (let i = 0; i < alarmList.length; i++) {
const alarmObj = alarmList[i];
const staticObj = pointsArr.find(p => p.IdLD === alarmObj.IdLD);
if (staticObj && staticObj.Link) {
// Link kann relativ sein, ggf. mit Host ergänzen
hasActiveAlarm = true;
alarmIdLD = alarmObj.IdLD;
alarmText = alarmObj.Me || "Alarm aktiv";
const isAbsolute =
staticObj.Link.startsWith("http://") || staticObj.Link.startsWith("https://");
alarmLink = isAbsolute
? staticObj.Link
: // : `${window.location.origin}/talas5/devices/${staticObj.Link}`;
`http://10.10.0.13/talas5/devices/${staticObj.Link}`; // nur zum Testen
: `http://10.10.0.13/talas5/devices/${staticObj.Link}`;
found = true;
break;
}
}
const poiIconsData = useSelector(selectPoiIconsData);