

# Objektseite

# Overview

## Intro

Die  <em>Objektseite</em>  ist die bevorzugte Lösung, um komplexe Daten anzuzeigen und zu bearbeiten.

Sie bietet dazu eine flexible Struktur an, die beliebige Inhalte abbilden kann, sowie eine  <em>Anchor\-Nav,</em>  um einzelne  <em>Sektionen</em>  auf der Seite schneller zu erreichen.

 ![](/images/versions/25-0/figma/Zara4cRvI50WZjHZhBygt5/2082_112712.png)<!--[Figma](https://www.figma.com/design/Zara4cRvI50WZjHZhBygt5/?node-id=2082:112712)--> 

 <strong>MATE Intro Objektseite</strong> 

## Verwendung

|👍 Do|👎 Don't|
|-|-|
|...wenn der Nutzer komplexe Objekte mit allen Einzelheiten einsehen und bearbeiten will. <br>(Komplexe Objekte: 20\+ Felder, 1\-N Relationen, beliebig viele Fremdschlüssel)|...wenn der Nutzer Daten mit einfacher Komplexität einsehen oder bearbeiten will. (Einfache Objekte: 1\-20 Felder, keine 1\-N Relationen, keine oder wenige Fremdschlüssel)<br>Nutze dafür das einfache Master Detail Bedienmuster.<br>...wenn der Nutzer mehrere komplexe Datensätze auf einmal bearbeiten will, nutze dazu die Tabellenseite.<br>...wenn der Nutzer komplexe Daten anlegen will, nutze dazu die Prozessnavigation.|

# Guidelines

## Aufbau
 ![](/images/versions/25-0/figma/Zara4cRvI50WZjHZhBygt5/2082_153825.png)<!--[Figma](https://www.figma.com/design/Zara4cRvI50WZjHZhBygt5/?node-id=2082:153825)--> 

 <strong>Aufbau der Objektseite</strong> 

### Global Header

Der  [Global Header]()  ist die oberste Leiste der Benutzeroberfläche und bietet Zugang zu anwendungsübergreifenden Funktionen.

### Breadcrumbs

 [Breadcrumbs]()  zeigen Nutzenden, wo sie sich befinden und erlauben es, schnell eine oder mehrere hierarchische Ebenen zurück zu gehen.

### Object Header und Seitenüberschrift

Die Seitenüberschrift dient zur Orientierung. Sie sollte die dargestellte Seite beschreiben und/oder das Objekt bzw. den Kontext wie z.B. in welcher Funktion sich der Nutzer derzeit befindet, kommunizieren.

Aktuell ist im Design System kein globaler Standard für Seitentitel festgelegt.

Die Verantwortung für die Definition und Dokumentation des jeweils richtigen Seitentitels liegt auf Produktebene.

Siehe den Abschnitt  [Seitenüberschrift und Object Header]()  unter UX Writing in Foundations.

### Anchor\-Nav

Die  [Anchor\-Nav]()  erleichtert es dem Nutzer, die einzelnen  <em>Sektionen</em>  zu erreichen und gibt ihm eine Übersicht, welche Inhalte auf dieser Seite zu finden sind.

Inhalt der  [Anchor\-Nav]() :

* Links zu den Überschriften aller  <em>Sektionen</em>  der  <em>Objektseite</em>  (erforderlich)

### Sektionen

 <em>Sektionen</em>  stellen semantisch zusammengehörige Daten vom Objekt dar, z.B. Betriebsstätten oder Hauptadresse einer Person. Zusätzlich zu den Objektdaten werden alle Kind\-Objekte als Sektion dargestellt.

Inhalt einer Sektion:

* Überschrift der Sektion (erforderlich)
* Daten der Sektion (erforderlich)
* Funktionen um mit den Daten zu interagieren (optional)

## Verhalten

1. <em>Objektseiten</em>  stellen Objekte, die zu einer Kollektion gehören, dar. Daher implementieren die  <strong>Breadcrumbs </strong> die  <strong>hierarchische Navigation.</strong> .
1. Der  <strong>Object Header</strong>  ist permanent oberhalb der Anchor\-Nav zu sehen und scrollt nicht mit dem Inhalt mit.<br><br>Um Schlüsselinformationen und den notwendigen Kontext für den Nutzer in der Kopfzeile zu kommunizieren, können durchaus Inhalte aus den Sektionen wiederholt und verdichtet werden.<br><br>In der  <strong>Bearbeitenansicht von Sektionen </strong> wird die Kopfzeile ebenfalls angezeigt. Die Kopfzeile scrollt in der Bearbeitenansicht ebenfalls nicht mit dem Inhalt mit.
1. Die  [<strong>Anchor\-Nav</strong>]()  <strong> </strong> befindet sich permanent unterhalb der  <em>Kopfzeile</em> .<br><br>Scrollt der Nutzer im  <em>Inhaltsbereich</em> , dann wird der jeweilige Navigationspunkt hervorgehoben, der sich unterhalb der  [Anchor\-Nav]()  befindet.
1. <strong>Sektionen </strong> können eine optionale  <em>Funktionsleiste</em>  zur Interaktion mit den Daten der  <em>Sektion</em> . Die Funktionsleiste ist rechtsbündig auf Höhe der Sektionsüberschrift und besteht aus einer oder mehreren Tasten.<br><br>Sektionen werden durch Trennlinien optisch voneinander abgegrenzt.

#### <strong>Varianten Sektionen</strong>

|||
|-|-|

Je nachdem welche Komplexität die Daten haben und in welcher Relation sie zum Objekt stehen, werden diese entsprechend dargestellt und verhalten sich unterschiedlich.

 <strong>1. Formular \- Sektion</strong> 

Sollte das Objekt eine einfache Relation zu den Daten innerhalb der Sektion haben, dann verwende dazu die  [Key\-Value\-Facet]() . Für eine bessere Übersicht sollten auf der Objektseite lediglich die verfügbaren Daten angezeigt werden, d.h. Name\-Wert\-Facetten ohne Wert sollten gar nicht angezeigt werden. In der optionalen Funktionsleiste befinden sich Tasten, um mit den Daten zu interagieren z.B. um diese über eine Formularseite zu bearbeiten. 

 <strong>2. Tabellen\-Sektion</strong> 

Sollte das Objekt zu mehreren Datensätzen einer  <em>Sektion</em>  eine Relation haben, dann werden die Datensätze in einer Tabelle dargestellt. 

Standardmäßig kann die Höhe der Tabelle dynamisch zwischen 1 und 20 Zeilen wachsen. Falls nur wenige Einträge vorhanden sind, wird im Layout auch nur wenig Höhe von der Tabelle beansprucht. Sollten mehr Einträge verfügbar sein, können diese durch Scrollen innerhalb der Tabelle von den Nutzern erreicht werden. Im Einzelnen kann die Höhe der Tabelle auch bis zu 50 Zeilen betragen, wenn dadurch ca. 80\% der damit verbundenen Use\-Cases besser bedient werden können. In der optionalen  <em>Funktionsleiste</em>  befinden sich Tasten, um ggf. neue Datensätze hinzuzufügen, sowie weitere Optionen, um mit den Daten zu interagieren. 

Die Tabelle verfügt über zeilenbezogene Funktionen, um den jeweiligen Datensatz zu bearbeiten. Dazu kann der jeweilige Datensatz \- abhängig von seiner Komplexität \- entweder in einer  [Formularseite]() ,  [Objektseite]() oder individuellen Seite dargestellt werden.

Siehe  [Grids]()  für weitere Informationen.

 <strong>3. Suchen in Tabellen\-Sektionen</strong> 

Die Tabellen\-Funktionsleiste bietet ein optionales Suchfeld, das es ermöglicht, einfache Suchen über alle Tabellenspalten durchzuführen. Für komplexere Suchen empfiehlt das UX Team die Verwendung einer eigenen  [Tabellenseite]()  inkl.  [Filter Panel]() .

#### <strong>Kind\-Objekt als Sektion</strong>

Sollte das Objekt Kind\-Objekte, also untergeordnete Objekte, besitzen, werden diese ebenfalls als Sektion angezeigt. Es wird für jedes vorhandene Kind\-Objekt je eine Sektion angezeigt! Abhängig von der Datenstruktur des Kind\-Objektes, kann das untergeordnete Objekt als Tabellen\-, Formular\- oder Zusammenfassung\-Sektion angezeigt werden. Die Details zum Kind\-Objekt können über die Taste bzw. die Verknüpfung in der Funktionsleiste angezeigt werden. Im nebenstehenden Beispiel könnte die Sektion "Person" ein Kind\-Objekt darstellen, dass über den Link "Person Detail anzeigen" geöffnet werden kann.

## Bearbeiten von komplexen Objekten

Komplexe Objekte zeichnen sich unter anderem dadurch aus, dass sie weitere Objekte aggregieren. Daher ist es sinnvoll, die aggregierten Objekte einzeln bearbeiten und speichern zu können. Dies erfolgt über das Bearbeiten der  <em>Kopfzeile</em> , sowie über die Funktionalitäten der jeweiligen  <em>Sektionen</em> .

### <strong>Bearbeiten von Formular\-Sektionen</strong>

1. Sollten die Nutzer von einer  <em>Objektseite</em>  zu einer  <em>Bearbeitenansicht</em>  einer  <em>Sektion</em>  vorwärts navigiert sein, so führt die Up\-Navigation\-Taste, die Browser\-Zurück\-Taste, sowie die Abbrechen\-Taste zurück zur  <em>Objektseite</em> , wobei ihr vorheriger Zustand (Scrollposition d.h. welche Sektion vorher angezeigte wurde) wiederhergestellt wird.
1. Sollten die Nutzer nicht gespeicherte Eingaben gemacht haben, dann erfolgt eine Rückfrage, ob diese Verworfen werden sollten, bevor eine Navigation zurück erfolgt.
1. Speichern die Nutzer ihre Eingaben auf der  <em>Bearbeitenansicht</em> , dann wird eine Navigation zurück zur Objektseite ausgelöst. Die Objektseite zeigt ihren vorheriger Zustand (Scrollposition d.h. welche Sektion vorher angezeigte wurde) mit aktuellen Daten.
1. Durch einen  [Toast]()  wird das erfolgreiche Speichern vom System an den Nutzer gemeldet

### <strong>Bearbeiten von Tabellen\-Sektionen</strong>

1. Neue Datensätze können über die Funktionsleiste hinzugefügt werden. Dazu navigiert die Anwendung standardmäßig im selben Browserfenster bzw. Tab. auf eine  <em>Hinzufügenansicht</em>  (leere Formularseite). Den Nutzern stehen die üblichen Optionen im Browser zur Verfügung, um die Navigation zur  <em>Hinzufügenansicht</em>  in einem neuen Fenster oder Tab zu öffnen.
1. Sollten die Nutzer von einer Objektseite zu einer  <em>Bearbeitenansicht</em>  eines Objekts oder zu einer  <em>Hinzufügenansicht</em>  innerhalb der Tabellensektion vorwärts navigiert sein, so führen die Up\-Navigation\-Taste, die Browser\-Zurück\-Taste, sowie die Abbrechen\-Taste zurück zur Objektseite. Die Objektseite zeigt ihren vorherigen Zustand (Scrollposition d.h. welche Sektion vorher angezeigte wurde und die vorherigen Sortierungen der Tabellen). Die Scrollposition innerhalb der Tabelle muss nicht wiederhergestellt werden, d.h. die vorher anzeigten Zeilen müssen nicht wieder anzeigen werden.
1. Sollte der Nutzer ungespeicherte Eingaben gemacht haben, dann wird er gefragt, ob diese Verworfen werden sollten, bevor eine Navigation zurück erfolgt.
1. Speichern die Nutzer ihre Eingaben auf der  <em>Bearbeiten</em> \- oder  <em>Hinzufügenansicht</em> , dann wird eine Navigation zurück zur Objektseite ausgelöst. Die Objektseite zeigt ihren vorheriger Zustand (Scrollposition d.h. welche Sektion vorher angezeigte wurde und die vorherigen Sortierungen der Tabellen) mit aktuellen Daten an. Die Scrollposition innerhalb der Tabelle muss nicht wiederhergestellt werden, d.h. die vorher anzeigten Zeilen müssen nicht wieder anzeigen werden.
1. Durch einen  [Toast]()  wird das erfolgreiche Speichern vom System an den Nutzer gemeldet.

## Barrierefreiheit

|||
|-|-|
|![](/images/versions/25-0/figma/Zara4cRvI50WZjHZhBygt5/2088_76595.png)<!--[Figma](https://www.figma.com/design/Zara4cRvI50WZjHZhBygt5/?node-id=2088:76595)-->|<strong>Ausschnitt eine Sektion</strong>|
|![](/images/versions/25-0/figma/Zara4cRvI50WZjHZhBygt5/2088_77377.png)<!--[Figma](https://www.figma.com/design/Zara4cRvI50WZjHZhBygt5/?node-id=2088:77377)-->|<strong>Navigationsreihgenfolge</strong>|

1. Kopfzeilenüberschrift : Die Überschrift der Kopfzeile muss mittels H3 Überschrift und  `synneo\-heading\-xl`  umgesetzt werden.
1. Sektionsüberschriften: Die Überschriften der Sektionen müssen mittels H3 Überschriften umgesetzt werden, damit assistive Technologien diese mit den anderen Überschriften der Seite zusammen als Liste vorlesen können. Außerdem vereinfacht dies die Navigation auf der Seite, da jeweils zur nächsten Überschrift gesprungen werden kann.
1. Optionale Funktionsleiste: Die Tasten in der optionalen Funktionsleiste bieten Interaktionsmöglichkeiten für jeweils eine Sektion an. Die Titel der Tasten reichen als Beschreibung nicht aus, um sehgeschädigten Nutzer den notwendigen Kontext zu bieten. Ohne zusätzliche Information ist es also unklar, auf welches Element sich die Aktion bezieht. Den Tasten muss daher mittels  <em>"aria\-label" </em> mehr Kontext hinzugefügt werden, indem der Sektionstitel vor den Funktionstitel gestellt wird. <br>Z.B:  `<button aria\-label=„Hauptadresse bearbeiten">Bearbeiten</button>`
1. Tastaturbedienung: Die Objektseite lässt sich vollständig mit der Tastatur bedienen. Über die Tabulatortaste („Tab“) oder Hochstell\- und Tabulatortaste („Shift \+ Tab“) sind interaktive Elemente fokussierbar. Die Reihenfolge richtet sich im Inhaltsbereich nach der Reihenfolge der Elemente der Objektseite.
1. Zum Anfang der Seite springen: Um das Springen zum Anfang der Seite zu vereinfachen, sollte das tastaturgesteuerte Springen via Funktionstaste ermöglicht werden.
1. Sektionen untereinander abgrenzen: Die vorhandenen Bereiche sollten als ARIA\-Regionen definiert werden. Generell sollten, neben der Strukturierung in HTML, immer Markups bzw. Landmarks verwendet werden, um die Seite noch besser zu strukturieren.

