Zum Inhalt

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)