// /services/fetchDigitalOutputsService.ts export const fetchDigitalOutputsService = async () => { const mode = process.env.NEXT_PUBLIC_CPL_MODE; if (mode === "json") { const res = await fetch("/api/cpl/digitalOutputsAPIHandler"); if (!res.ok) throw new Error("❌ Fehler beim Laden der digitalen Ausgänge (JSON)"); const data = await res.json(); const state = data.win_da_state; const labels = data.win_da_bezeichnung; if (!Array.isArray(state)) { console.warn("⚠️ win_da_state fehlt oder ist ungültig:", state); return []; } return state.slice(0, 4).map((status: number, index: number) => ({ id: index + 1, label: Array.isArray(labels) && labels[index] ? labels[index] : `Ausgang ${index + 1}`, status: status === 1, })); } // jsmock oder production const scriptUrl = mode === "production" ? "/CPL?/CPL/SERVICE/digitalOutputs.js" : "/CPLmockData/SERVICE/digitalOutputsMockData.js"; await new Promise((resolve, reject) => { const script = document.createElement("script"); script.src = scriptUrl; script.async = true; script.onload = () => resolve(); script.onerror = () => reject("❌ Fehler beim Laden der digitalOutputs.js"); document.body.appendChild(script); }); const win = window as any; const state = win.win_da_state; const labels = win.win_da_bezeichnung; if (!Array.isArray(state)) { console.warn("⚠️ win_da_state fehlt oder ist ungültig:", state); return []; } return state.slice(0, 4).map((status: number, index: number) => ({ id: index + 1, label: Array.isArray(labels) && labels[index] ? labels[index] : `Ausgang ${index + 1}`, status: status === 1, })); };