Zum Hauptinhalt springen
Sachbearbeiter-Cockpit

Helfer

getByPath

getByPath(obj, path): any

Liest einen verschachtelten Wert aus einem Objekt per Pfad.

  • Gibt null zurück, wenn der Key existiert aber den Wert null hat.
  • Gibt undefined zurück, wenn der Key im Objekt nicht existiert.

Diese Unterscheidung ist der Grund für die Funktion: nur so können die Widgets „Wert ist leer" (Platzhalter ) von „Pfad ist falsch" (Entwickler-Hinweis) trennen.

Parameters

obj

any

Das Objekt, meist ein Query-Ergebnis aus der API.

path

string

Punkt-getrennter Pfad, z. B. "title.de". Zahlen adressieren Array-Positionen ("0.title.de").

Returns

any

Der Wert, null bei vorhandenem Null-Wert, undefined bei fehlendem Key.

Example

getByPath({ user: { name: "Ada" } }, "user.name"); // "Ada"
getByPath({ user: { name: null } }, "user.name"); // null
getByPath({ user: {} }, "user.name"); // undefined
import { getByPath } from '@gentics/cockpit/widgets';

getByPath({ user: { name: 'Ada' } }, 'user.name'); // 'Ada'
getByPath({ user: { name: null } }, 'user.name'); // null → Key existiert
getByPath({ user: {} }, 'user.name'); // undefined → Key fehlt

staticSource

staticSource(data): () => UseQueryResult<JsonObject, Error>

Wickelt ein bereits vorliegendes, statisches Objekt in eine Field-taugliche Query-Quelle. Nützlich, wenn die Daten schon da sind (kein echter Query-Hook), Field aber eine () => UseQueryResult-Funktion erwartet.

data === undefined wird als „lädt noch" (isPending) interpretiert → Skeleton.

Parameters

data

JsonObject | undefined

Returns

() => UseQueryResult<JsonObject, Error>

Macht aus einem fertigen Objekt eine Quelle in der Form, die die Widgets erwarten — ohne echten Query-Hook. Die zurückgegebene Funktion liefert genau drei Felder:

FeldWert
datadas übergebene Objekt
isPendingtrue, solange data === undefined
isPlaceholderDataimmer false
import { staticSource } from '@gentics/cockpit/widgets';

<Field dataSource={staticSource({ user: { name: 'Ada' } })} jsonPath="user.name" />
<Field dataSource={staticSource(undefined)} jsonPath="user.name" /> // Skeleton

isValidISODate

isValidISODate(dateStr): boolean

Prüft, ob ein String ein ISO-Datum ist — und ob dieses Datum existiert.

Erlaubt ist YYYY-MM-DD mit optionaler Zeit (THH:mm:ss), optionalen Millisekunden und optionalem Z. Alles andere ergibt false, auch Nicht-Strings und Formate wie 15.01.2026. Die Widgets entscheiden damit, ob ein Wert als Datum formatiert oder als Datum sortiert wird.

Parameters

dateStr

string

Der zu prüfende Wert.

Returns

boolean

true nur bei passendem Muster und gültigem Kalenderdatum — "2026-02-31" ist deshalb false.

Example

isValidISODate("2026-01-15"); // true
isValidISODate("2026-01-15T08:30:00Z"); // true
isValidISODate("15.01.2026"); // false

Prüft einen String gegen das Muster YYYY-MM-DD mit optionaler Zeitangabe (THH:mm:ss, optionale Millisekunden, optionales Z) und ob das Datum tatsächlich existiert. Alles andere — auch Nicht-Strings — ergibt false.

isValidISODate('2026-01-15'); // true
isValidISODate('2026-01-15T08:30:00Z'); // true
isValidISODate('15.01.2026'); // false

formatRelativeDate

formatRelativeDate(dateStr): string

Datum für die Anzeige: benannte Tage statt Zahlen, wo es sich anbietet.

Verglichen wird auf Tagesgrenze (die Uhrzeit spielt keine Rolle), gegen das Datum des aufrufenden Systems.

Parameters

dateStr

string | Date | null | undefined

Datum als ISO-String, Date, null oder undefined.

Returns

string

"Heute", "Gestern", "Morgen", sonst das Datum als DD.MM.YYYY. Für leere Eingaben (null, undefined, "") ein "-".

Example

formatRelativeDate(new Date()); // "Heute"
formatRelativeDate("2026-01-15"); // "15.01.2026"
formatRelativeDate(null); // "-"

Gibt für Tagesgrenzen einen benannten Wert zurück, sonst das Datum in DD.MM.YYYY:

EingabeAusgabe
heuteHeute
gesternGestern
morgenMorgen
jedes andere Datum15.01.2026
null / undefined / leer-