Skip to content

Composite Views

Michael Massee edited this page Aug 6, 2026 · 3 revisions

Composite Views

Was sind Composite Views?

Ein Composite View ist eine frei zusammengesetzte Browser-Ansicht, die mehrere Inhalte gleichzeitig auf einer Seite darstellt – z. B. Rangliste und laufende Spielrunde nebeneinander, oder eine Tabelle kombiniert mit einem eingebetteten Timer, einem Logo/Bild und einer externen Webseite. Jeder Composite View läuft wie eine normale Webserver-Anzeige auf einem eigenen TCP-Port und wird per Server-Sent-Events (SSE) live aktualisiert – kein manuelles Neuladen nötig.

Im Unterschied zur einfachen Webserver-Konfiguration (ein Sheet pro Port) lässt sich ein Composite View in mehrere Panels aufteilen, die frei angeordnet werden.

Composite Views verwalten

Composite Views werden über Extras → Optionen → PétTurnMngr → Composite Views verwaltet.

Element Beschreibung
Webserver aktiv Globaler Schalter für alle Composite Views (und den normalen Webserver)
System-Filter Schränkt die im Detail-Dialog wählbaren Sheet-Typen auf ein bestimmtes Turniersystem ein (oder „Alle")
Liste der Views Zeigt alle konfigurierten Composite Views: Port, Name/Panel, Zoom, Status (Aktiv/Inaktiv)
+ Hinzufügen Öffnet den Detail-Dialog für einen neuen Composite View auf dem nächsten freien Port ab 9100
Bearbeiten Öffnet den Detail-Dialog für den ausgewählten View
Löschen Entfernt den ausgewählten View (inkl. zugehöriger Webserver-Regie-Verknüpfungen)
Exportieren Speichert alle konfigurierten Composite Views als JSON-Datei (siehe Export/Import unten)
Importieren Lädt Composite Views aus einer zuvor exportierten JSON-Datei und fügt sie der bestehenden Liste hinzu

Jede Aktion (Hinzufügen/Bearbeiten/Löschen/Importieren) speichert sofort und aktualisiert bereits laufende Anzeigen live, ohne dass die Optionsseite mit „OK" verlassen werden muss.

Der Detail-Dialog

Der Detail-Dialog („Composite View konfigurieren") kombiniert einen visuellen Layout-Builder mit der Panel-Konfiguration.

Layout aufbauen (Split-Baum)

Ein neuer Composite View startet mit einem einzelnen Panel, das die gesamte Fläche einnimmt. Über die Schaltflächen wird das aktuell ausgewählte Panel geteilt:

  • Split horizontal – teilt das Panel in eine linke und rechte Hälfte
  • Split vertikal – teilt das Panel in eine obere und untere Hälfte

Jeder Split kann beliebig oft wiederholt werden, sodass verschachtelte Layouts mit beliebig vielen Panels entstehen (Fliesenlayout, ähnlich einem Tiling-Fenstermanager). Für jeden Split lässt sich der Flächenanteil der beiden Seiten prozentual über Breite bzw. Höhe einstellen. Ein Panel kann über Blatt löschen wieder aus dem Baum entfernt werden (das Wurzel-Panel kann nicht gelöscht werden). Eine Layout-Vorschau zeigt die aktuelle Aufteilung während der Bearbeitung an.

Panel-Konfiguration

Für das jeweils ausgewählte Panel stehen fünf Anzeigemodi zur Verfügung:

Modus Beschreibung
Blatt Zeigt ein Turnier-Sheet als Tabelle an (siehe Sheet-Auswahl unten)
Externe URL Bettet eine beliebige http://- oder https://-Adresse als eingebettete Seite ein (manche Webseiten erlauben keine Einbettung)
Timer Zeigt den aktuellen Turnier-Timer im Panel an
Lokale Datei Zeigt eine lokale HTML-, Bild- oder PDF-Datei im Panel an
Turnierstartseite Zeigt die konfigurierte Turnier-Startseite im Panel an

Für Panels vom Typ Blatt stehen zusätzlich diese Einstellungen zur Verfügung:

Einstellung Werte Beschreibung
Sheet Auswahl Welches Sheet angezeigt wird (siehe Sheet-Auswahl)
Zoom 10 – 500 % Darstellungsgröße der Tabelle im Panel
Sichtbar % 10 – 100 % Wie viel der Gesamttabelle im Panel sichtbar ist (Rest wird abgeschnitten statt gescrollt)
H (horizontale Ausrichtung) Kein / Links / Mitte / Rechts Horizontale Positionierung der Tabelle im Panel
V (vertikale Ausrichtung) Kein / Oben / Mitte / Unten Vertikale Positionierung der Tabelle im Panel
Blattname anzeigen Ja / Nein Zeigt den Sheet-Namen als Kopfzeile über dem Panel an

Sheet-Auswahl

Die Sheet-Auswahl ist system-agnostisch: Rollen wie „Rangliste", „Aktuelle Spielrunde", „Meldeliste", „Checkin" oder „Teilnehmer" lösen sich automatisch auf das im Dokument aktive Turniersystem auf – ein Composite View muss also nicht pro Turniersystem neu gebaut werden. Zusätzlich stehen einige system-spezifische Spezial-Sheets zur Verfügung (z. B. Maastrichter-Finalrunden, Kaskaden-Felder, Poule-K.O.), die im System-Filter der Optionsseite je nach gewähltem Turniersystem ein-/ausgeblendet werden.

Globale Einstellungen

Einstellung Beschreibung
Name Anzeigename des Composite View (erscheint u. a. in der Webserver-Regie-Auswahl). Pflichtfeld – jeder Composite View braucht einen eigenen, nicht-leeren Namen, der unter allen Views eindeutig ist (Groß-/Kleinschreibung wird dabei unterschieden, „Ansicht" und „ansicht" gelten also als zwei verschiedene Namen)
Zoom Globaler Zoom-Faktor (10–500 %), wirkt zusätzlich zum Zoom der einzelnen Panels
Kopf-/Fußzeile global Rendert Kopf-/Fußzeile aus Panel 0 einmal für die gesamte Ansicht statt pro Panel

Rahmen (Rand)

Um den gesamten Composite View kann ein Rahmen gelegt werden – nützlich, um z. B. den Status eines Turniers (aktiv/pausiert) optisch hervorzuheben:

Einstellung Werte Beschreibung
Rand-Art Kein / Durchgezogen / Gestrichelt / Gepunktet / Doppelt Linienart des Rahmens
Dicke 0 – 50 px Rahmendicke
Farbe Farbwähler Rahmenfarbe
Transp. 0 – 100 % Transparenz der Rahmenfarbe
Animation Keine / Laufende Ameisen / Pulsieren / Farbwechsel Optionale Animation des Rahmens

Vorschau im Dialog übernimmt die aktuelle Konfiguration sofort in eine bereits laufende Anzeige, ohne den Dialog zu schließen – praktisch, um das Ergebnis direkt im Browser zu kontrollieren.

Validierung

Beim Speichern werden alle Composite Views geprüft:

  • Port darf nicht leer sein und muss zwischen 1 und 65535 liegen
  • Jeder Port darf nur einmal verwendet werden (auch nicht doppelt mit dem Webserver-Regie-Port)
  • Name darf nicht leer sein und muss unter allen Composite Views eindeutig sein (case-sensitiv)
  • Mindestens ein Panel muss konfiguriert sein
  • Zoom muss zwischen 10 und 500 % liegen, sichtbarer Tabellenanteil zwischen 10 und 100 %
  • Randdicke muss zwischen 0 und 50, Rand-Transparenz zwischen 0 und 100 liegen

Bei einem Fehler wird die betroffene Zeile in der Fehlermeldung benannt; es wird nichts gespeichert, bis alle Einträge gültig sind.

Export/Import

Über die Buttons Exportieren und Importieren auf der Optionsseite lässt sich die komplette Composite-View-Konfiguration als JSON-Datei sichern und wieder einspielen.

Anwendungsfälle

  • Umzug auf einen anderen Rechner: eine aufwendig gebaute Ansicht (Split-Layout, mehrere Panels, Rahmen-Animation) muss nicht am neuen Rechner manuell nachgebaut werden.
  • Backup vor größeren Änderungen: vor dem Umbau eines bestehenden Composite Views einmal exportieren, um im Fehlerfall den alten Stand wieder importieren zu können.
  • Vorlagen weitergeben: ein einmal gebautes Composite-View-Set (z. B. „Anzeigebildschirm + Projektor" für ein bestimmtes Turnierformat) lässt sich als Datei an andere PTM-Nutzer weitergeben.
  • Mehrere Sets parallel pflegen: da der Import an die bestehende Liste anhängt, lassen sich z. B. „Composite Views – Halle A.json" und „Composite Views – Halle B.json" bei Bedarf nacheinander in dieselbe Installation importieren.

Exportieren

  1. Exportieren klicken – ein Dateiauswahldialog mit Titel „Composite Views exportieren" öffnet sich, vorbelegt mit dem Dateinamen composite-views.json und dem Filter „JSON" (*.json).
  2. Zielordner und Dateiname wählen, Dialog bestätigen.
  3. PTM schreibt die aktuelle Arbeitskopie aller Composite Views (inkl. Panels, Split-Layout und Rahmen-Konfiguration) als JSON-Datei – auch noch nicht mit „OK" bestätigte Änderungen der aktuellen Sitzung werden dabei mit exportiert.
  4. Erfolgsmeldung: „N Composite View(s) exportiert nach: Pfad".

Importieren

  1. Importieren klicken – ein Dateiauswahldialog mit Titel „Composite Views importieren" öffnet sich, gefiltert auf *.json.
  2. Zuvor exportierte JSON-Datei auswählen, Dialog bestätigen.
  3. PTM liest die Datei ein und hängt die enthaltenen Views an die bereits vorhandene Liste an – bestehende Composite Views bleiben unverändert erhalten, nichts wird überschrieben oder ersetzt.
  4. Konflikte werden automatisch aufgelöst, bevor gespeichert wird:
    • Port-Konflikt (Port bereits vergeben, auch innerhalb derselben Import-Datei): der importierte View bekommt automatisch den nächsten freien Port (ab 9100, wie beim manuellen Hinzufügen).
    • Namens-Konflikt (Name bereits vergeben oder leer): der Name wird automatisch eindeutig gemacht – bei einem bereits vergebenen Namen durch Anhängen von „ (2)", „ (3)", …, bei fehlendem Namen durch einen Platzhalter auf Basis des (bereits aufgelösten) Ports, z. B. „View 9103".
  5. Der Import wird sofort gespeichert und bereits laufende Composite-View-Anzeigen werden live aktualisiert, genau wie beim manuellen Hinzufügen/Bearbeiten/Löschen.
  6. Erfolgsmeldung: „N Composite View(s) importiert."

Fehlerfälle

Situation Verhalten
Datei ist leer oder enthält kein gültiges JSON Fehlermeldung „Die Datei enthält keine gültige Composite-View-Konfiguration.", es wird nichts importiert
Datei kann nicht gelesen/geschrieben werden (z. B. Berechtigungsproblem) Allgemeine Fehlermeldung, Vorgang wird abgebrochen
Import würde trotz automatischer Konfliktauflösung eine ungültige Konfiguration ergeben (Sicherheitsnetz) Import wird komplett verworfen, die Liste bleibt exakt im Zustand vor dem Import-Versuch

Dateiformat

Die exportierte Datei ist ein JSON-Array – dasselbe Format, in dem PTM Composite Views auch intern (in der LibreOffice-Konfiguration) speichert. Sie kann bei Bedarf auch von Hand nachbearbeitet werden, sofern die Struktur erhalten bleibt. Minimalbeispiel für einen View mit einem einzelnen Rangliste-Panel:

[
  {
    "port": 9100,
    "name": "Anzeigebildschirm",
    "aktiv": true,
    "zoom": 100,
    "mitHeaderFooter": true,
    "layoutJson": "",
    "panels": [
      {
        "typ": "BLATT",
        "sheetConfig": "RANGLISTE",
        "zoom": 100,
        "sichtbarerTabellenAnteil": 100,
        "horizontalAusrichtung": "kein",
        "vertikalAusrichtung": "kein",
        "blattnameAnzeigen": false,
        "externeUrl": ""
      }
    ],
    "rand": { "dicke": 0, "art": "kein", "farbe": 0, "transparenz": 0, "animation": "keine" }
  }
]

Ein leeres layoutJson ergibt beim Import das Standard-Layout (ein Panel, volle Fläche); bei mehreren Panels enthält layoutJson den serialisierten Split-Baum (Ergebnis der Split-horizontal/-vertikal-Aktionen im Detail-Dialog) und muss beim Handbearbeiten entsprechend mit angepasst werden. sheetConfig verwendet dieselben system-agnostischen Rollen wie unter Sheet-Auswahl beschrieben (z. B. RANGLISTE, AKTUELLE_SPIELRUNDE).

Zusammenspiel mit der Webserver-Regie

Jeder aktive Composite View steht in der Webserver-Regie als „Quelle" zur Auswahl. Wird der Port eines Composite Views nachträglich geändert, migriert PTM automatisch alle Regie-Ziele, die auf diesen View zeigen, auf den neuen Port – ohne dass die stabile Regie-URL für Zuschauer sich ändert.

Clone this wiki locally