65 lines
3.4 KiB
Markdown
65 lines
3.4 KiB
Markdown
# FeatureRatingSystem
|
|
## Übersicht
|
|
Das FeatureRatingSystem enthält Komponenten zur detaillierten Anzeige von gemeldeten Straßenschäden. Es ermöglicht Nutzern, Informationen und Fotos zu einem Schaden einzusehen und diesen über ein Community-Rating-System zu validieren.
|
|
|
|
---
|
|
## Methoden
|
|
|
|
## 1. FeatureInfoDialog
|
|
`Composable Function`
|
|
|
|
Ein modaler UI-Dialog, der zur Anzeige von Objektdaten eines `ArcGISFeature` dient.
|
|
|
|
### Zweck
|
|
Visualisierung von Sachdaten (Attribute), das asynchrone Laden von Bildanhängen und die Bereitstellung einer Schnittstelle für Nutzerinteraktionen (Bewertungen).
|
|
|
|
### Parameter
|
|
| Parameter | Typ | Beschreibung |
|
|
| :--- | :--- | :--- |
|
|
| `feature` | `ArcGISFeature?` | Das ArcGIS-Objekt, dessen Daten angezeigt werden. |
|
|
| `onDismiss` | `() -> Unit` | Callback zum Schließen des Dialogs. |
|
|
| `onRate` | `(ArcGISFeature, Boolean) -> Unit` | Callback, der ausgelöst wird, wenn ein Nutzer eine Bewertung abgibt. |
|
|
|
|
### Interne Zustandsvariablen (State)
|
|
* **`photoBitmaps`** (`List<ImageBitmap>`): Speichert die dekodierten Bilder, die aus den Feature-Attachments geladen wurden.
|
|
* **`isLoadingPhotos`** (`Boolean`): Statusindikator, der den Ladevorgang der Anhänge steuert.
|
|
|
|
### Funktionsweise
|
|
1. **Initialisierung**: Beim Start (`LaunchedEffect`) wird geprüft, ob das Feature vollständig geladen ist.
|
|
2. **Attachment-Download**: Die Funktion ruft `fetchAttachments()` auf. Für jeden Anhang werden die Rohdaten (`fetchData`) geladen.
|
|
3. **Bildverarbeitung**: Die Byte-Arrays werden mittels `BitmapFactory` dekodiert und in `ImageBitmap` konvertiert, um sie in Compose anzuzeigen.
|
|
4. **UI-Rendering**: Die Attribute `Typ` und `Beschreibung` werden zusammen mit den Bildern in einer scrollbaren `Card` dargestellt.
|
|
|
|
---
|
|
|
|
## 2. updateFeatureRating
|
|
`Extension Function (suspend)`
|
|
|
|
Eine Erweiterungsfunktion für das `MapViewModel`, die die Geschäftslogik für das Bewertungssystem kapselt.
|
|
|
|
### Zweck
|
|
Persistente Aktualisierung des Community-Zählers eines Schadens in der ArcGIS Online Feature Layer Table.
|
|
|
|
### Parameter
|
|
| Parameter | Typ | Beschreibung |
|
|
| :--- | :--- | :--- |
|
|
| `feature` | `ArcGISFeature` | Das zu bewertende Feature-Objekt. |
|
|
| `isPositive` | `Boolean` | `true` für eine Bestätigung (+1), `false` für eine Abmilderung (-1). |
|
|
| `context` | `Context` | Erforderlich für die Anzeige von UI-Feedback (Toasts). |
|
|
|
|
### Logik-Ablauf
|
|
1. **Wertberechnung**: Extrahiert das Attribut `communitycounter`. Erhöht oder verringert den Wert, wobei ein Minimum von `0` sichergestellt wird.
|
|
2. **Lokale Aktualisierung**: Setzt den neuen Wert im Attribut-Dictionary des Features und ruft `updateFeature()` auf der `ServiceFeatureTable` auf.
|
|
3. **Remote-Synchronisation**: Mittels `applyEdits()` werden die Änderungen an den ArcGIS-Server gesendet.
|
|
4. **Feedback**: Informiert den Nutzer via `Toast` und `SnackBar` über den Erfolg oder Fehler der Operation.
|
|
|
|
### Datenbank-Attribute (ArcGIS Schema)
|
|
* **`Typ`**: Identifikator für die Schadensart.
|
|
* **`Beschreibung`**: Optionaler Freitext des Erstellers.
|
|
* **`communitycounter`**: Ganzzahliger Wert zur Speicherung der Community-Validierungen.
|
|
|
|
---
|
|
|
|
## Fehlerbehandlung
|
|
* **Bild-Dekodierung**: Schlägt das Laden eines Bildes fehl, wird der Fehler geloggt, aber der Dialog bleibt funktionsfähig.
|
|
* **Netzwerk-Synchronisation**: Bei Fehlern während `applyEdits` wird eine Fehlermeldung ausgegeben, um den Nutzer über mangelnde Konnektivität zu informieren. |