<!-- /docs/components/main/analogInputs/AnalogInputsSettingsModal.md -->

# ⚙️ AnalogInputsSettingsModal

Diese Komponente zeigt ein zentriertes Modal zur Konfiguration eines analogen Eingangs.

---

## 🧩 Funktion

- Wird angezeigt, wenn `isOpen` true ist und ein `selectedInput` gesetzt ist.
- Zeigt alle relevanten Felder zur Konfiguration:
  - **Bezeichnung**
  - **Offset** (z. B. für Kalibrierung)
  - **Faktor** (Multiplikator)
  - **Einheit** (Dropdown: V, mA, °C, bar, %)
  - **Loggerintervall** (in Minuten)

---

## ✏️ Verwendung

```tsx
<AnalogInputSettingsModal
  selectedInput={input}
  isOpen={modalOpen}
  onClose={() => setModalOpen(false)}
/>
```

---

## 💾 Speichern-Logik

Beim Klick auf „Speichern“ werden die Einstellungen auf zwei verschiedene Arten verarbeitet:

### 🔧 Entwicklungsmodus (`localhost`):

- Daten werden per POST an die lokale API gesendet:  
  `/api/cpl/updateAnalogInputsSettingsHandler`
- Die Datenstruktur orientiert sich an `window.win_analogInputs*` Variablen

### 🚀 Produktionsmodus:

- Daten werden über einen GET-Request mit URL-Parametern an ein CGI-Backend übermittelt:
  `/CPL?/Service/ae.ACP&ACN{slot}=...&ACO{slot}=...`

---

## 🧪 Besonderheiten

- Werte wie `offset` und `factor` werden als String mit `,` oder `.` akzeptiert und korrekt konvertiert.
- Eingabefelder sind per `useState` gebunden.
- Ein `console.log` zeigt `loggerInterval`, wenn `selectedInput` geladen wird.
- Nach erfolgreichem Speichern wird die Seite neu geladen (`location.reload()`), um aktuelle Werte anzuzeigen.

---

## 🛑 Validierung

- Aktuell keine Validierung gegen ungültige Werte (z. B. negatives Intervall oder leere Felder).
- Sollte ggf. ergänzt werden, wenn das Backend empfindlich auf falsche Werte reagiert.

---

## 🖼️ UI/UX

- Modal ist zentriert mit dunklem Overlay.
- Abbrechen über „X“-Button oben rechts.
- Tailwind CSS für Layout und Styling verwendet.
