feat: Alarm UI Widget

This commit is contained in:
ISA
2025-09-17 09:16:04 +02:00
parent 13ca1cece0
commit ea6d71a4f5
7 changed files with 73 additions and 107 deletions

View File

@@ -133,7 +133,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
const poiLayerVisible = useSelector(state => state.poiLayerVisible.visible);
const zoomTrigger = useSelector(state => state.zoomTrigger.trigger);
const poiReadTrigger = useSelector(state => state.poiReadFromDbTrigger.trigger);
const GisStationsStaticDistrict = useSelector(selectGisStationsStaticDistrict);
// entfernt, da weiter unten dynamisch und mit Fallback deklariert
const gisSystemStaticStatus = useSelector(state => state.gisSystemStatic.status);
const polylineEventsDisabled = useSelector(state => state.polylineEventsDisabled.disabled);
const mapLayersVisibility = useSelector(selectMapLayersState) || {};
@@ -144,25 +144,37 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
selectGisLinesStatusFromWebservice
);
// Alarm Status und Link aus GisStationsStatusDistrict
// Alarm Status und Link dynamisch aus GisStationsStaticDistrict
const gisStationsStatusDistrict = useSelector(state => state.gisStationsStatusDistrict.data);
// Unterstützt sowohl Array-Shape (Statis[]) als auch Objekt mit Statis-Array
const GisStationsStaticDistrict = useSelector(selectGisStationsStaticDistrict) || {};
const pointsArr = GisStationsStaticDistrict.Points || [];
let hasActiveAlarm = false;
let alarmLink = "";
let alarmText = "";
let alarmIdLD = null;
if (Array.isArray(gisStationsStatusDistrict)) {
const alarmObj = gisStationsStatusDistrict.find(item => item?.Alarm === 1 && item?.AlarmLink);
const alarmObj = gisStationsStatusDistrict.find(item => item?.Alarm === 1);
hasActiveAlarm = !!alarmObj;
alarmLink = alarmObj?.AlarmLink || "";
alarmIdLD = alarmObj?.IdLD;
alarmText = alarmObj?.Me || "Alarm aktiv";
} else if (gisStationsStatusDistrict?.Statis) {
const alarmObj = gisStationsStatusDistrict.Statis.find(
item => item?.Alarm === 1 && item?.AlarmLink
);
const alarmObj = gisStationsStatusDistrict.Statis.find(item => item?.Alarm === 1);
hasActiveAlarm = !!alarmObj;
alarmLink = alarmObj?.AlarmLink || "";
alarmIdLD = alarmObj?.IdLD;
alarmText = alarmObj?.Me || "Alarm aktiv";
}
if (hasActiveAlarm && alarmIdLD) {
const staticObj = pointsArr.find(p => p.IdLD === alarmIdLD);
if (staticObj && staticObj.Link) {
// Link kann relativ sein, ggf. mit Host ergänzen
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
}
}
const poiIconsData = useSelector(selectPoiIconsData);
const poiIconsStatus = useSelector(selectPoiIconsStatus);
const poiTypData = useSelector(selectPoiTypData);