Tabs, Gruppen und Grid¶
Diese Seite beschreibt die sichtbare Dashboard-Struktur und das Packing der Widgets ins Raster.
Tabs¶
Tabs sind optionale Reiter. Wenn keine Tabs definiert sind, erstellt die App intern einen Default-Tab mit dem Titel Dashboard.
Sortierung der Tabs¶
Tabs werden in dieser Reihenfolge sortiert:
dashboard.tabs[].orderdashboard.tabs[].titledashboard.tabs[].id
Automatischer Inhalt eines Tabs¶
Wenn ein Tab weder widgetIds noch groupIds definiert:
- zeigt er alle ungruppierten Widgets
- und alle Gruppen
Das ist praktisch für ein Haupt-Dashboard, in dem alles sichtbar sein soll.
Gruppen¶
Gruppen erzeugen optisch zusammenhängende Bereiche mit eigener Breite im Raster.
Eine Gruppe:
- hat
widgetIds - hat
order - kann optional
titletragen - kann optional
expandable: trueals1/1Link-Kachel im Grid erscheinen - kann optional ein
iconfür diese eingeklappte Kachel tragen - kann optional über
valueWidgetIddenvalueeines Gruppen-Widgets auf der eingeklappten Kachel spiegeln - kann optional über
valuePatternmehrere Gruppen-Values auf der eingeklappten Kachel kombinieren; die benötigten Widget-IDs werden direkt aus den Platzhaltern extrahiert - kann optional
highlightColorundborderColortragen - begrenzt ihren Inhalt über
widthColumns - begrenzt bei
expandable: trueoptional auch die Popup-Breite, wennwidthColumnsexplizit gesetzt ist
Die Breite bezieht sich auf die aktuell verfügbare Spaltenzahl des Grids.
Für expandable-Gruppen gilt abweichend:
- im Haupt-Grid belegen sie immer genau
1x1 - optional zeigen sie unter dem Icon den aufgelösten
valueeines pervalueWidgetIdreferenzierten Widgets - alternativ rendern sie ein
valuePatternmit den aufgelöstenvalue-Texten der darin referenzierten Widget-IDs - ein Klick öffnet die eigentlichen Widgets in einem Popup
- das Popup verwendet dieselbe Widgetgrösse wie das Haupt-Grid
- die Popup-Breite nutzt dieselbe Spaltenzahl wie das Haupt-Grid, aber höchstens
5
Beispiel:
widthColumns: 3nutzt drei Raster-Spalten- ein Wert grösser als die aktuell verfügbaren Spalten verhält sich wie Vollbreite
Sortierung innerhalb eines Tabs¶
Der Tab-Inhalt wird in ResolvedDashboardContentBlock aufgelöst.
Es gibt zwei Blockarten:
- freie Widget-Blöcke
- Gruppenblöcke
Alle Einträge werden gemeinsam nach:
order- Deklarationsreihenfolge innerhalb des Tabs
sortiert.
Wichtig:
- gleiche
order-Werte bleiben stabil in der JSON-Reihenfolge - das gilt für Widgets und Gruppen
Grid-Packing¶
Im eigentlichen Raster passiert danach ein zweiter Schritt:
- Widgets eines Blocks werden nach
layout.ordersortiert - das Packing sucht die erste freie Position von oben nach unten und von links nach rechts
- Grösse und aktuelle Spaltenzahl bestimmen die konkrete Platzierung
Orientierung¶
Die Spaltenzahl hängt von der Geräteausrichtung ab:
- Hochformat:
portraitColumns - Querformat:
landscapeColumns
Bei Drehung wird das Grid neu gepackt. Die logische Reihenfolge bleibt erhalten, die konkrete Position kann sich ändern.
Zusätzlich können beide Werte im Reiter Optik lokal pro Gerät überschrieben werden. Ein leerer Override fällt wieder auf den JSON-Wert zurück.
Vollbreite mit full/n¶
Vollbreiten-Widgets sind speziell:
- sie nutzen immer alle aktuell verfügbaren Spalten
- sie starten auf einer neuen Zeile
- nachfolgende Widgets dürfen Lücken vor diesem Widget nicht auffüllen
Dadurch kann full/1 oder full/2 bewusst als Zeilenumbruch oder Abschnittskarte verwendet werden.
Gruppen und Vollbreite zusammen¶
Sinnvolle Kombinationen:
- Gruppe für thematisch zusammenhängende Widgets
- innerhalb der Gruppe ein
full/1-Widget als Trenner oder grosser Statusbanner
Beispiel¶
{
"dashboard": {
"groups": [
{
"id": "living-room-windows",
"title": "Fenster",
"order": 30,
"widthColumns": 4,
"highlightColor": "#C88A43",
"borderColor": "#8A4A17",
"widgetIds": [
"window-left",
"window-right",
"door-garden"
]
}
],
"tabs": [
{
"id": "living",
"title": "Wohnzimmer",
"order": 20,
"groupIds": [
"living-room-windows"
],
"widgetIds": [
"main-light",
"ambient-light",
"energy-banner"
]
}
]
}
}
Wenn energy-banner die Grösse full/1 hat, bildet es innerhalb des freien Widget-Blocks einen harten Zeilenumbruch.
Layout-Empfehlungen¶
1/1für viele kleine Statuswerte2/1für interaktive Widgets mit etwas mehr Text3/1oder4/1für Übersichtenfull/1für Trennkacheln, Bereichsüberschriften oder grosse Summenwerte- Gruppen für physische Räumlichkeiten oder thematische Bereiche
borderColorfür Räume oder Sicherheitsbereiche, die im Layout klar abgegrenzt sein sollen