Daten von 4 APIs laden und in useState Variable speichern

This commit is contained in:
ISA
2024-04-16 14:25:13 +02:00
parent 7cee920e12
commit 431ac838da

View File

@@ -12,19 +12,24 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
const [GisStationsStaticDistrict, setGisStationsStaticDistrict] = useState( const [GisStationsStaticDistrict, setGisStationsStaticDistrict] = useState(
[] []
); // Zustand für statische Daten ); // Zustand für statische Daten
const [dataStatus, setDataStatus] = useState([]); // Zustand für Statusdaten const [GisStationsStatusDistrict, setGisStationsStatusDistrict] = useState(
const [dataIcons, setDataIcons] = useState([]); // Zustand für Icons []
const [dataSystem, setDataSystem] = useState([]); // Zustand für Systemdaten ); // Zustand für Statusdaten
const [GisStationsMeasurements, setGisStationsMeasurements] = useState([]); // Zustand für Messdaten
const [GisSystemStatic, setGisSystemStatic] = useState([]); // Zustand für Systemdaten
const [DataIcons, setDataIcons] = useState([]); // Zustand für Icon-Daten
// Konstanten für die URLs // Konstanten für die URLs
const mapGisStationsStaticDistrictUrl = const mapGisStationsStaticDistrictUrl =
config.mapGisStationsStaticDistrictUrl; config.mapGisStationsStaticDistrictUrl;
const mapDataStatusUrl = config.mapDataStatusUrl; const mapGisStationsStatusDistrictUrl =
config.mapGisStationsStatusDistrictUrl;
const mapGisStationsMeasurementsUrl = config.mapGisStationsMeasurementsUrl;
const mapGisSystemStaticUrl = config.mapGisSystemStaticUrl;
const mapDataIconUrl = config.mapDataIconUrl; const mapDataIconUrl = config.mapDataIconUrl;
const mapDataSystemUrl = config.mapDataSystemUrl;
console.log("GisStationsStaticDistrict 1 :", GisStationsStaticDistrict); console.log("GisStationsStaticDistrict 1 :", GisStationsStaticDistrict);
console.log("map:", map); console.log("map 1:", map);
// Funktion zum Aktualisieren der Position in der Datenbank // Funktion zum Aktualisieren der Position in der Datenbank
const updateLocationInDatabase = async (id, newLatitude, newLongitude) => { const updateLocationInDatabase = async (id, newLatitude, newLongitude) => {
@@ -58,7 +63,7 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
const fetchData = async () => { const fetchData = async () => {
try { try {
console.log("Datenabruf gestartet..."); console.log("Datenabruf gestartet...");
const response = await fetch(config.mapGisStationsStaticDistrictUrl); const response = await fetch(mapGisStationsStaticDistrictUrl);
const jsonResponse = await response.json(); const jsonResponse = await response.json();
// Prüfen, ob die Antwort das erwartete Format hat und Daten enthält // Prüfen, ob die Antwort das erwartete Format hat und Daten enthält
@@ -76,7 +81,7 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
setGisStationsStaticDistrict([]); setGisStationsStaticDistrict([]);
} }
} catch (error) { } catch (error) {
console.error("Fehler beim Laden der Daten: ", error); console.error("Fehler beim Laden der Daten 1: ", error);
setGisStationsStaticDistrict([]); setGisStationsStaticDistrict([]);
} }
}; };
@@ -126,37 +131,131 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
}, [map, GisStationsStaticDistrict]); // Abhängigkeiten hinzufügen, um sicherzustellen, dass Effekt bei Änderungen neu ausgeführt wird }, [map, GisStationsStaticDistrict]); // Abhängigkeiten hinzufügen, um sicherzustellen, dass Effekt bei Änderungen neu ausgeführt wird
//------------------------------------------ //------------------------------------------
//GisStationsStaticDistrict Daten laden
useEffect(() => { useEffect(() => {
// Prüfen der Internetverbindung beim Start
console.log("Prüfen der Internetverbindung...");
checkInternet();
// Asynchrones Laden der Kartendaten beim Initialisieren der Komponente
const fetchData = async () => { const fetchData = async () => {
try { try {
console.log("Datenabruf gestartet..."); console.log("Datenabruf gestartet...");
const responses = await Promise.all([ const response = await fetch(mapGisStationsStaticDistrictUrl);
fetch(config.mapGisStationsStaticDistrictUrl).then((res) => const jsonResponse = await response.json();
res.json()
), // Prüfen, ob die Antwort das erwartete Format hat und Daten enthält
fetch(config.mapDataStatusUrl).then((res) => res.json()), if (jsonResponse && jsonResponse.Points) {
fetch(config.mapDataIconUrl).then((res) => res.json()), console.log(
fetch(config.mapDataSystemUrl).then((res) => res.json()), "GisStationsStaticDistrict geladen:",
]); jsonResponse.Points
console.log("Daten erfolgreich geladen."); );
setGisStationsStaticDistrict(responses[0].Points); setGisStationsStaticDistrict(jsonResponse.Points); // Direkter Zugriff auf 'Points'
setDataStatus(responses[1].Statis);
setDataIcons(responses[2].List); // Anzeigen eines spezifischen Details aus dem JSON
setDataSystem( console.log(
responses[3].Systems.filter((system) => system.Allow === 1) "etwas von json zeigen :",
); jsonResponse.Points[0].LD_Name
); // Beispiel für das Anzeigen des LD_Name des ersten Points
} else {
console.error(
'Erwartete Daten im "Points"-Array nicht gefunden',
jsonResponse
);
setGisStationsStaticDistrict([]);
}
} catch (error) { } catch (error) {
console.error("Fehler beim Laden der Daten: ", error); console.error("Fehler beim Laden der Daten 1: ", error);
setGisStationsStaticDistrict([]);
} }
}; };
fetchData(); fetchData();
}, []); // Leeres Abhängigkeitsarray, um nur beim ersten Mount zu laden }, []); // Dependency-Array ist leer, um den Effekt nur beim Mount auszuführen
//------------------------------------------
//GisStationsStatusDistrict Daten laden
useEffect(() => {
const fetchData = async () => {
try {
console.log("Datenabruf gestartet...");
const response = await fetch(mapGisStationsStatusDistrictUrl);
const jsonResponse = await response.json();
// Prüfen, ob die Antwort das erwartete Format hat und Daten enthält
if (jsonResponse && jsonResponse.Statis) {
console.log(
"GisStationsStatusDistrict geladen:",
jsonResponse.Statis
);
setGisStationsStatusDistrict(jsonResponse.Statis); // Direkter Zugriff auf 'Statis'
} else {
console.error(
'Erwartete Daten im "Statis"-Array nicht gefunden',
jsonResponse
);
setGisStationsStatusDistrict([]);
}
} catch (error) {
console.error("Fehler beim Laden der Daten 2: ", error);
setGisStationsStatusDistrict([]);
}
};
fetchData();
}, []); // Dependency-Array ist leer, um den Effekt nur beim Mount auszuführen
//------------------------------------------
//GisStationsMeasurements Daten laden
useEffect(() => {
const fetchData = async () => {
try {
console.log("Datenabruf gestartet...");
const response = await fetch(mapGisStationsMeasurementsUrl);
const jsonResponse = await response.json();
// Prüfen, ob die Antwort das erwartete Format hat und Daten enthält
if (jsonResponse && jsonResponse.Statis) {
console.log("GisStationsMeasurements geladen:", jsonResponse.Statis);
setGisStationsMeasurements(jsonResponse.Statis); // Direkter Zugriff auf 'Statis'
} else {
console.error(
'Erwartete Daten im "Statis"-Array nicht gefunden',
jsonResponse
);
setGisStationsMeasurements([]);
}
} catch (error) {
console.error("Fehler beim Laden der Daten 3: ", error);
setGisStationsMeasurements([]);
}
};
fetchData();
}, []); // Dependency-Array ist leer, um den Effekt nur beim Mount auszuführen
//------------------------------------------
//GisSystemStatic Daten laden
useEffect(() => {
const fetchData = async () => {
try {
console.log("Datenabruf gestartet...");
const response = await fetch(mapGisSystemStaticUrl);
const jsonResponse = await response.json();
// Prüfen, ob die Antwort das erwartete Format hat und Daten enthält
if (jsonResponse && jsonResponse.Systems) {
console.log("GisSystemStatic geladen:", jsonResponse.Systems);
setGisSystemStatic(jsonResponse.Systems); // Direkter Zugriff auf 'Systems'
} else {
console.error(
'Erwartete Daten im "Systems"-Array nicht gefunden',
jsonResponse
);
setGisSystemStatic([]);
}
} catch (error) {
console.error("Fehler beim Laden der Daten 4: ", error);
setGisSystemStatic([]);
}
};
fetchData();
}, []); // Dependency-Array ist leer, um den Effekt nur beim Mount auszuführen
//------------------------------------------
const offlineTileLayer = "../TileMap/mapTiles/{z}/{x}/{y}.png"; const offlineTileLayer = "../TileMap/mapTiles/{z}/{x}/{y}.png";
const onlineTileLayer = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"; const onlineTileLayer = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";