# MOSAIC Mobile Ansichten

## Zweck

MOSAIC unterstuetzt mobile Ansichten fuer `GRID` und `FORM`.

Dabei gibt es zwei Betriebsarten:

- im Entwicklermodus kann die Handyansicht ueber das Handy-Symbol oben rechts simuliert werden
- im Wirkbetrieb schaltet die Ansicht bei kleiner Bildschirmbreite automatisch auf das mobile Layout um

Die Simulation im Entwicklermodus begrenzt die nutzbare Breite bewusst auf eine Handybreite von ca. `460px`, damit die Darstellung auch auf dem Desktop realistisch pruefbar ist.

## Uebersicht

| Bereich | Entwicklermodus | Wirkbetrieb | Konfiguration |
|---|---|---|---|
| Grid | Handy-Symbol schaltet Simulation ein und aus | automatische Umschaltung bei schmalem Viewport | `mobile` in der `*_grid.cfg` |
| Form | folgt der Simulation aus dem Grid oder reagiert direkt auf kleine Breite | automatische Umschaltung bei schmalem Viewport | keine eigene `mobile.columns`-Steuerung |

## Grid-Mobile-Ansicht

### Vertikale Datensatzdarstellung

Fuer Grids kann in der `*_grid.cfg` eine mobile Darstellung aktiviert werden:

```php
'mobile' => [
    'record orientation' => 'vertical',
],
```

Wirkung:

- die normale Tabellenansicht wird in der Handyansicht in eine vertikale Datensatzdarstellung umgewandelt
- pro Datensatz werden die Felder untereinander ausgegeben
- zwischen den Datensaetzen wird eine Trennlinie angezeigt
- Textwerte bleiben linksbuendig, Zahlenwerte rechtsbuendig

Die Umschaltung gilt:

- im Entwicklermodus sofort in der simulierten Handyansicht
- im Wirkbetrieb automatisch bei kleiner Bildschirmbreite

### Felder nur in der Handyansicht ausblenden

Zusaetzlich koennen im `GRID` einzelne Felder nur fuer die mobile Ansicht abgeschaltet werden:

```php
'mobile' => [
    'record orientation' => 'vertical',
    'columns' => [
        'externe_firma_id' => [
            'display_row' => false,
        ],
    ],
],
```

Bedeutung:

- das Feld bleibt in der Desktop-Ansicht sichtbar
- das Feld wird nur in der Handyansicht des `GRID` ausgeblendet
- die Regel gilt sowohl in der Entwickler-Simulation als auch im echten mobilen Lauf
- diese Funktion gilt nur fuer `GRID`

Hinweise:

- ausgewertet wird `mobile.columns.<feld>.display_row`
- alternativ wird intern auch `row_display` akzeptiert, empfohlen ist jedoch `display_row`
- die Ausblendung betrifft Kopfzeile, Datenzeilen und Summenzeilen des Grids

### Vollstaendiges Beispiel

```php
return [
    'title' => 'Ausbildungsstellen',
    'marker' => true,
    'primary_key' => ['externe_firma_id'],
    'edit_link' => 'externe_firma',
    'mobile' => [
        'record orientation' => 'vertical',
        'columns' => [
            'externe_firma_id' => [
                'display_row' => false,
            ],
            'passwort' => [
                'display_row' => false,
            ],
        ],
    ],
    'columns' => [
        'externe_firma_id' => [
            'label' => 'ID',
            'type' => 'int',
            'align' => 'right',
        ],
        'Name' => [
            'label' => 'Name',
            'type' => 'text',
        ],
        'Ort' => [
            'label' => 'Ort',
            'type' => 'text',
        ],
        'passwort' => [
            'label' => 'Passwort',
            'type' => 'text',
        ],
    ],
];
```

Ergebnis:

- auf dem Desktop werden alle Felder gemaess `columns` angezeigt
- in der Handyansicht werden `externe_firma_id` und `passwort` ausgeblendet
- die restlichen Felder werden vertikal pro Datensatz dargestellt

## Form-Mobile-Ansicht

Die mobile Formularansicht ist bewusst einfacher gehalten.

Wirkung:

- Felder werden einspaltig dargestellt
- Labels stehen oberhalb der Eingaben
- Eingabefelder nutzen die volle Breite
- Schaltflaechen werden mobil untereinander bzw. breit angeordnet
- Pflichtfelder behalten ihre Kennzeichnung

Die Formularansicht wird aktiv:

- im Entwicklermodus bei aktiver Grid-Handysimulation
- im Wirkbetrieb automatisch bei kleiner Bildschirmbreite

## Wichtige Abgrenzung

Die Konfiguration

```php
'mobile' => [
    'columns' => [
        'feldname' => [
            'display_row' => false,
        ],
    ],
],
```

gilt ausschliesslich fuer `GRID`.

Sie hat keine Wirkung auf:

- `FORM`
- `show_form.php`
- `egrid`
- sonstige MOSAIC-Runner

## Empfehlungen

- fuer mobile Grid-Ansichten nach Moeglichkeit `record orientation = vertical` verwenden
- technische oder interne Felder wie IDs, Kennzeichen oder Hilfsspalten in `mobile.columns` gezielt ausblenden
- Felder nicht doppelt ueber `row_display = false` abschalten, wenn sie nur mobil verschwinden sollen
- fuer Formulare keine gesonderte Feldausblendung in der Mobile-Ansicht planen, solange dies nicht ausdruecklich im Kern erweitert wird

## Technischer Stand

Der aktuelle Kern setzt mobile Ansichten wie folgt um:

- `GRID`: CSS-Umschaltung fuer echte mobile Viewports und zusaetzliche Entwickler-Simulation
- `FORM`: CSS-Umschaltung fuer echte mobile Viewports und zusaetzliche Entwickler-Simulation
- feldweise Mobile-Ausblendung: nur im `GRID`

