feat: GisStationsStaticDistrict in Redux-Store integriert
- WebService-Endpoint für GisStationsStaticDistrict angebunden - Daten beim Start der Anwendung automatisch geladen und in Redux gespeichert - UI (DataSheet) verwendet die Daten direkt aus dem Redux-Store - Fehlerhandling und Initialzustand in Redux-Slice verbessert - Alte lokale Fetch-Logik entfernt, zentrale Datenhaltung über Redux
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// /redux/api/fromDB/locationDevicesLoader.js
|
||||
// /redux/api/fromDB/fetchLocationDevices.js
|
||||
export const fetchLocationDevices = async () => {
|
||||
const response = await fetch("/api/talas_v5_DB/locationDevice/locationDevices");
|
||||
if (!response.ok) {
|
||||
10
redux/api/fromWebService/fetchGisStationsStaticDistrict.js
Normal file
10
redux/api/fromWebService/fetchGisStationsStaticDistrict.js
Normal file
@@ -0,0 +1,10 @@
|
||||
// /redux/api/fromWebService/fetchGisStationsStaticDistrict.js
|
||||
import { mapGisStationsStaticDistrictUrl } from "../../../config/config";
|
||||
|
||||
export const fetchGisStationsStaticDistrict = async () => {
|
||||
const response = await fetch(mapGisStationsStaticDistrictUrl);
|
||||
if (!response.ok) {
|
||||
throw new Error("GisStationsStaticDistrict konnte nicht geladen werden");
|
||||
}
|
||||
return await response.json();
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
// /redux/slices/db/locationDevicesFromDBSlice.js
|
||||
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
|
||||
import { fetchLocationDevices } from "../../api/fromDB/locationDevicesLoader";
|
||||
import { fetchLocationDevices } from "../../api/fromDB/fetchLocationDevices";
|
||||
|
||||
export const fetchLocationDevicesFromDB = createAsyncThunk("locationDevicesFromDB/fetchLocationDevicesFromDB", async () => {
|
||||
return fetchLocationDevices();
|
||||
|
||||
@@ -1,23 +1,35 @@
|
||||
// /redux/slices/webService/gisStationsStaticDistrictSlice.js
|
||||
import { createSlice } from "@reduxjs/toolkit";
|
||||
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
|
||||
import { fetchGisStationsStaticDistrict } from "../../api/fromWebService/fetchGisStationsStaticDistrict";
|
||||
|
||||
const initialState = [];
|
||||
export const fetchGisStationsStaticDistrictFromWebService = createAsyncThunk("gisStationsStaticDistrict/fetchGisStationsStaticDistrictFromWebService", async () => {
|
||||
return fetchGisStationsStaticDistrict();
|
||||
});
|
||||
|
||||
const gisStationsStaticDistrictSlice = createSlice({
|
||||
name: "gisStationsStaticDistrict",
|
||||
initialState,
|
||||
reducers: {
|
||||
setGisStationsStaticDistrict: (state, action) => {
|
||||
return action.payload;
|
||||
},
|
||||
clearGisStationsStaticDistrict: () => {
|
||||
return [];
|
||||
},
|
||||
initialState: {
|
||||
data: [],
|
||||
status: "idle",
|
||||
error: null,
|
||||
},
|
||||
reducers: {},
|
||||
extraReducers: (builder) => {
|
||||
builder
|
||||
.addCase(fetchGisStationsStaticDistrictFromWebService.pending, (state) => {
|
||||
state.status = "loading";
|
||||
})
|
||||
.addCase(fetchGisStationsStaticDistrictFromWebService.fulfilled, (state, action) => {
|
||||
state.status = "succeeded";
|
||||
state.data = action.payload;
|
||||
})
|
||||
.addCase(fetchGisStationsStaticDistrictFromWebService.rejected, (state, action) => {
|
||||
state.status = "failed";
|
||||
state.error = action.error.message;
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
export const { setGisStationsStaticDistrict, clearGisStationsStaticDistrict } = gisStationsStaticDistrictSlice.actions;
|
||||
|
||||
export const selectGisStationsStaticDistrict = (state) => state.gisStationsStaticDistrict;
|
||||
export const selectGisStationsStaticDistrict = (state) => state.gisStationsStaticDistrict.data;
|
||||
|
||||
export default gisStationsStaticDistrictSlice.reducer;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import { configureStore } from "@reduxjs/toolkit";
|
||||
import lineVisibilityReducer from "./slices/lineVisibilitySlice";
|
||||
import currentPoiReducer from "./slices/currentPoiSlice";
|
||||
import gisStationsStaticDistrictReducer from "./slices/webService/gisStationsStaticDistrictSlice";
|
||||
import polylineLayerVisibleReducer from "./slices/polylineLayerVisibleSlice";
|
||||
import locationDevicesFromDBReducer from "./slices/db/locationDevicesFromDBSlice";
|
||||
import gisStationsStaticDistrictReducer from "./slices/webService/gisStationsStaticDistrictSlice";
|
||||
|
||||
export const store = configureStore({
|
||||
reducer: {
|
||||
lineVisibility: lineVisibilityReducer,
|
||||
currentPoi: currentPoiReducer,
|
||||
gisStationsStaticDistrict: gisStationsStaticDistrictReducer,
|
||||
polylineLayerVisible: polylineLayerVisibleReducer,
|
||||
locationDevicesFromDB: locationDevicesFromDBReducer,
|
||||
gisStationsStaticDistrict: gisStationsStaticDistrictReducer,
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user