-
-
Notifications
You must be signed in to change notification settings - Fork 1
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 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 („Composite View konfigurieren") kombiniert einen visuellen Layout-Builder mit der Panel-Konfiguration.
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.
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 |
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.
| 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 |
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.
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.
Über die Buttons Exportieren und Importieren auf der Optionsseite lässt sich die komplette Composite-View-Konfiguration als JSON-Datei sichern und wieder einspielen.
- 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 klicken – ein Dateiauswahldialog mit Titel „Composite Views exportieren"
öffnet sich, vorbelegt mit dem Dateinamen
composite-views.jsonund dem Filter „JSON" (*.json). - Zielordner und Dateiname wählen, Dialog bestätigen.
- 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.
- Erfolgsmeldung: „N Composite View(s) exportiert nach: Pfad".
-
Importieren klicken – ein Dateiauswahldialog mit Titel „Composite Views importieren"
öffnet sich, gefiltert auf
*.json. - Zuvor exportierte JSON-Datei auswählen, Dialog bestätigen.
- 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.
- 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".
- Der Import wird sofort gespeichert und bereits laufende Composite-View-Anzeigen werden live aktualisiert, genau wie beim manuellen Hinzufügen/Bearbeiten/Löschen.
- Erfolgsmeldung: „N Composite View(s) importiert."
| 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 |
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).
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.
Einstieg Home Installation Download
Turniersysteme Supermêlée Schweizer System Liga Jeder gegen Jeden K.-O.-System Poule-A/B Maastrichter System Kaskaden-K.O. Formule X Trip-Tête / Trio Kölner Sextet Dänisches System Monrad-System Tête-Series Crazy-Mêlée Arena-Pétanque Systemvergleich
Referenz Turnieransicht Sidebar Konfiguration WhatsApp Webserver Composite Views Webserver-Regie Turnier-Startseite FTP-Server KI-Assistent Siegergeld Planungsrechner Formeln Makros & Formeln Zeitplan-Feature Für Entwickler Entwicklungsumgebung Architektur: Threading Architektur: Blattschutz