tableplan.json — Layout-Format¶
Der Tischplan liegt als JSON-Datei neben dem Plugin-Jar:
<POS-Datenverzeichnis>/POSPlugins/AP/tableplan.json. Existiert sie nicht,
übernimmt das Plugin beim Start eine daneben liegende tableplan.seed.json
(so kann ein Ausrollmechanismus einen Startplan nur lesbar mitliefern).
Gelesen wird die Datei zur Laufzeit: Beim Öffnen des Tischplan-Tabs holt die Oberfläche den aktuellen Stand, eine Änderung wirkt also sofort — ohne Kassenneustart.
Bearbeitet wird der Plan auf drei Wegen — alle schreiben dasselbe Format: an der Kasse (Tischplan-Tab → „Plan bearbeiten"), im Tischplan-Hub (ein Plan für alle Kassen eines Betriebs) oder mit dem Tischplan-Editor, der jedem Release beiliegt (siehe Installation). Von Hand schreiben muss man die Datei also nie — diese Referenz hilft beim Prüfen, Sichern oder maschinellen Erzeugen.
Struktur¶
{
"version": 1,
"revision": 7,
"title": "Tischplan",
"plans": [
{
"tableArea": "Default",
"name": "Gastraum",
"size": { "width": 1200, "height": 800 },
"background": { "color": "#f7f4ee" },
"elements": [ ... ],
"tables": [ ... ]
}
]
}
| Feld | Bedeutung |
|---|---|
version |
Formatversion, aktuell 1. |
revision |
Zählt bei jeder Speicherung hoch. Wer speichert, muss sagen, auf welchem Stand er aufsetzt — passt der nicht mehr, wird die Speicherung abgelehnt, statt fremde Änderungen zu überschreiben. Von Hand geschriebene Dateien ohne revision gelten als 0. |
title |
Beschriftung des Tabs in der Tischübersicht (Default: „Tischplan"; die Kasse rendert Tabs in Großbuchstaben). |
plans[] |
Ein Plan pro Tischbereich (Table Area). Angezeigt wird der Plan, dessen tableArea zur links unten gewählten Area passt; gibt es keinen passenden, wird der erste Plan gezeigt. Stockwerke bildet man über Table Areas ab — eine Area pro Etage, ein Plan pro Area. |
Plan¶
| Feld | Bedeutung |
|---|---|
tableArea |
id der Table Area aus dem CCO Manager (z. B. "Default"). |
name |
Anzeigename (nur informativ). |
size |
Logisches Koordinatensystem (width/height). Der Plan skaliert responsiv, die Einheit ist frei — als Faustregel ~10 px pro 10 cm Raum. |
background.color |
Optionale Raum-Hintergrundfarbe. |
tables[] — die klickbaren Tische¶
{ "id": "7", "x": 540, "y": 180, "width": 130, "height": 130,
"shape": "round", "seats": 6, "label": "Stammtisch", "rotation": 0,
"groupId": "g1" }
| Feld | Bedeutung |
|---|---|
id |
Tischnummer wie in CCO (das, was man bei „Neuer Tisch" eintippt). Klick auf einen freien Tisch öffnet genau diesen Tisch; Klick auf einen belegten öffnet dessen Beleg. |
x, y, width, height |
Position/Größe im Plan-Koordinatensystem. |
shape |
"rect" (Default) oder "round". |
seats |
Optional, wird bei freien Tischen angezeigt („4 Pl."). |
label |
Optionale Beschriftung (Default: id). |
rotation |
Optional, Grad um den Mittelpunkt. |
groupId |
Optional. Tische mit derselben Gruppen-Id sind zusammengestellt: gemeinsamer Rahmen mit gemeinsamer Beschriftung („3+4"), gemeinsame Auswahl beim Verschieben, und ein Antippen im Betrieb behandelt sie als einen Tisch (Belege aller Mitglieder zur Auswahl; ist der Verbund frei, öffnet die niedrigste Nummer). Eine Gruppe mit weniger als zwei Mitgliedern löst sich von selbst auf. Rein grafisch — CCO führt weiterhin einen Beleg je Tisch. |
Belegte Tische, die im Plan nicht vorkommen, erscheinen unter dem Plan als klickbare Chips („Nicht im Plan") — es geht also nie ein Tisch verloren.
elements[] — Deko/Struktur (nicht klickbar)¶
{ "type": "rect", "style": "wall|bar|zone", "x": 0, "y": 0,
"width": 1200, "height": 12, "rx": 0, "label": "Bar", "color": "#..." }
{ "type": "line", "x1": 0, "y1": 0, "x2": 100, "y2": 0 }
{ "type": "label", "x": 600, "y": 40, "text": "Terrasse", "fontSize": 18 }
style steuert die Optik (wall dunkel, bar braun, zone gestrichelter
Rahmen); color überschreibt die Füllfarbe.
Statusfarben zur Laufzeit¶
- weiß = frei (Tisch existiert nur im Layout, kein offener Beleg)
- grün = eigener Tisch (offener Beleg des angemeldeten Kellners), mit Betrag
- orange = Tisch anderer Kellner, Kellnername unten im Tisch; Betrag nur
mit Berechtigung
TABLE_SEE_AMOUNT_OF_OTHER_TABLES - roter Badge = mehrere offene Belege auf dem Tisch (Klick fragt, welcher)