open_workshop/open_workshop_dokuwiki
matthias.lotz 253d289633 feat(dokuwiki): Flexible overview table with configurable columns
- Made overview table columns fully configurable via system parameters
- Added wiki_page_id placeholder for internal DokuWiki links
- Removed DokuWiki template dependency for overview table
- Added _register_hook to initialize parameters on module load/update
- Updated README with new configuration approach
- System parameters: overview_page_id, overview_title, overview_columns, overview_column_data
- Default columns: Name (with link), Status, Security Category, Area, Location, Image
2025-12-20 12:49:58 +01:00
..
data feat(dokuwiki): Add equipment overview table with DataTables 2025-12-19 20:40:29 +01:00
models feat(dokuwiki): Flexible overview table with configurable columns 2025-12-20 12:49:58 +01:00
security feat(dokuwiki): Add partner fields, editable smileys, category icon, and mass sync wizard 2025-12-14 20:55:21 +01:00
views feat(dokuwiki): Add partner fields, editable smileys, category icon, and mass sync wizard 2025-12-14 20:55:21 +01:00
wizard feat(dokuwiki): Add equipment overview table with DataTables 2025-12-19 20:40:29 +01:00
__init__.py feat(dokuwiki): Flexible overview table with configurable columns 2025-12-20 12:49:58 +01:00
__manifest__.py feat(dokuwiki): Flexible overview table with configurable columns 2025-12-20 12:49:58 +01:00
hooks.py feat(dokuwiki): Flexible overview table with configurable columns 2025-12-20 12:49:58 +01:00
README.md feat(dokuwiki): Flexible overview table with configurable columns 2025-12-20 12:49:58 +01:00

Equipment Übersichtstabelle - Setup

Voraussetzungen

Das datatables Plugin muss in DokuWiki installiert sein:

# Als DokuWiki Admin: Administration → Erweiterungsverwaltung
# Suche: "datatables"
# Installiere: "DataTables Plugin" von Matthias Schulte

Setup-Schritte

1. Odoo Konfiguration

Die Übersichtstabelle wird vollständig aus Odoo heraus konfiguriert - kein DokuWiki Template nötig!

Gehe zu: Einstellungen → Technisch → Parameter → Systemparameter

Standardwerte (automatisch gesetzt beim Modul-Install):

# Seiten-ID wo die Übersicht erstellt wird
dokuwiki.overview_page_id = werkstatt:ausruestung:start

# Titel der Übersichtsseite
dokuwiki.overview_title = Geräte & Maschinen - Übersicht

# Spaltenüberschriften (Pipe-separiert)
dokuwiki.overview_columns = Status|Sicherheits-Kategorie|Hersteller|Bemerkung|Typ|Bild|Standort|Dokumentation

# Spaltendaten mit Platzhaltern (Pipe-separiert)
dokuwiki.overview_column_data = {status_smiley}|{ows_machine_id.category_icon}|{partner_id}|{note}|{model}|{image}|{ows_machine_id.location}|{wiki_doku_link}

2. Erste Synchronisation

  1. In Odoo: Wartung → Konfiguration → Wiki-Synchronisation
  2. Wähle: "Übersichtstabelle aktualisieren"
  3. Klicke: "Synchronisieren"

Die Übersichtsseite wird erstellt unter: werkstatt:ausruestung:start

Features

DataTables Funktionen

  • Sortieren nach allen Spalten (Klick auf Header)
  • Filter/Suche über alle Felder
  • Pagination bei vielen Einträgen
  • Responsive Design

Flexible Spalten

  • Spalten in Odoo konfigurierbar (kein DokuWiki Template)
  • Alle Platzhalter verfügbar (siehe unten)
  • Spalten hinzufügen/entfernen ohne Code-Änderung
  • Änderungen sofort beim nächsten Sync wirksam

Standard-Spalten

Spalte Platzhalter Ausgabe
Status {status_smiley} 😊 / 😐 / ☹️
Sicherheits-Kategorie {ows_machine_id.category_icon} 🟢 / 🟡 / 🔴
Hersteller {partner_id} BOSCH, Festool, ...
Bemerkung {note} Notizen
Typ {model} Modellbezeichnung
Bild {image} Thumbnail 100px
Standort {ows_machine_id.location} Regal A3, ...
Dokumentation {wiki_doku_link} Link zur Detail-Seite

Spalten anpassen

Beispiel 1: Seriennummer hinzufügen

# Spaltenüberschriften erweitern
dokuwiki.overview_columns = Status|Typ|Seriennummer|Hersteller|Standort|Dokumentation

# Spaltendaten erweitern
dokuwiki.overview_column_data = {status_smiley}|{model}|{serial_no}|{partner_id}|{ows_machine_id.location}|{wiki_doku_link}

Beispiel 2: Minimale Ansicht

dokuwiki.overview_columns = Name|Status|Kategorie|Dokumentation
dokuwiki.overview_column_data = {name}|{status_smiley}|{ows_machine_id.category_icon}|{wiki_doku_link}

Beispiel 3: Detaillierte Ansicht mit Kosten

dokuwiki.overview_columns = Name|Hersteller|Modell|Seriennummer|Kosten|Garantie|Standort|Kategorie
dokuwiki.overview_column_data = {name}|{partner_id}|{model}|{serial_no}|{cost}|{warranty_date}|{location}|{ows_machine_id.category_icon}

Wichtig: Anzahl der Pipes muss übereinstimmen!

  • 3 Pipes = 4 Spalten
  • Spalten und Daten müssen gleiche Anzahl haben

Performance

  • Schneller Sync: Keine DB-Iteration über alle Einträge
  • Generiert nur eine Seite (statt 156 einzelne)
  • DokuWiki cached die Seite automatisch
  • Spalten-Änderung ohne Code-Deploy

Troubleshooting

DataTables funktioniert nicht

→ Installiere DataTables Plugin in DokuWiki

Bilder werden nicht angezeigt

→ Prüfe ob Equipment image_1920 Feld gesetzt hat → Bilder müssen zuerst via "Alle Equipment" Sync hochgeladen werden

Equipment fehlen in Tabelle

→ Nur Equipment mit gesetztem ows_area_id werden angezeigt → Prüfe Filter in action_sync_overview_table()

Spalten werden nicht korrekt dargestellt

→ Prüfe ob Anzahl Pipes in overview_columns und overview_column_data übereinstimmt → Beispiel: 3 Pipes = 4 Spalten

Platzhalter wird nicht ersetzt (z.B. {status} bleibt stehen)

→ Prüfe Schreibweise (case-sensitive!) → Siehe Liste der verfügbaren Platzhalter unten → Bei ows.machine Feldern: {ows_machine_id.feldname} verwenden

Workflow

┌─────────────────┐
│ Odoo Systempar. │
│ - Spalten       │
│ - Platzhalter   │
└────────┬────────┘
         │
         ▼
┌─────────────────────────┐
│ Odoo Equipment          │
│ (156 Einträge)          │
└────────┬────────────────┘
         │
         ▼
┌─────────────────────────┐
│ _generate_overview_     │
│ table_row()             │  ← Pro Equipment eine Zeile
│ (Platzhalter ersetzen)  │     mit Platzhalter-Engine
└────────┬────────────────┘
         │ 156 Zeilen
         ▼
┌─────────────────────────┐
│ Seite zusammenbauen     │
│ - Titel                 │
│ - DataTables Header     │
│ - Zeilen                │
│ - Footer                │
└────────┬────────────────┘
         │
         ▼
┌─────────────────────────┐
│ Seite speichern         │
│ werkstatt:ausruestung:  │
│ start                   │
└─────────────────────────┘

Automatische Updates

Die Übersichtstabelle wird NICHT automatisch bei Equipment-Änderungen aktualisiert.

Manueller Sync empfohlen:

  • Nach Massen-Importen
  • Einmal täglich/wöchentlich
  • Bei strukturellen Änderungen (neue Bereiche, etc.)

Alternativ: Cronjob einrichten

# In Odoo: Einstellungen → Technisch → Automatisierung → Geplante Aktionen

Name: Wiki Übersichtstabelle Update
Modell: maintenance.equipment
Aktion: action_sync_overview_table()
Intervall: Täglich um 02:00 Uhr

Verfügbare Platzhalter

Alle Platzhalter aus dem Detail-Template sind verfügbar!

Basis-Felder (maintenance.equipment)

  • {name} - Equipment-Name
  • {serial_no} - Seriennummer
  • {model} - Modell
  • {category} - Kategoriename
  • {status} - Status (aus status_id)
  • {status_smiley} - Status als Smiley (aus status_id.smiley Feld, z.B. 😊 oder ☹️)
  • {location} - Standort
  • {ows_area} - Bereichsname
  • {assign_date} - Zuweisungsdatum (formatiert)
  • {cost} - Kosten
  • {warranty_date} - Garantiedatum (formatiert)
  • {note} - Notizen
  • {partner_id} - Lieferant (Name)
  • {partner_ref} - Lieferanten-Referenz

Spezial-Felder

  • {view_type} - "Bereich" oder "Einsatzzweck"
  • {view_name} - Name des Bereichs/Einsatzzwecks
  • {wiki_doku_page} - ID der zentralen Doku-Seite
  • {wiki_doku_link} - Fertiger Link zur zentralen Doku-Seite
  • {odoo_link} - Fertiger Link zur Odoo Equipment-Seite
  • {odoo_url} - URL zur Odoo Equipment-Seite (ohne Link-Markup)
  • {sync_datetime} - Aktuelles Datum/Zeit
  • {image} - Equipment-Bild (300px Breite) - Format: {{:media_id?300}}
  • {image_large} - Equipment-Bild (Originalgröße) - Format: {{:media_id}}
  • {image_id} - Media-ID des Bildes (z.B. werkstatt:ausruestung:media:sabako-laser.jpg)

ows.machine Felder (falls verknüpft)

  • {ows_machine_id.name} - Name
  • {ows_machine_id.model} - Modell
  • {ows_machine_id.serial_no} - Seriennummer
  • {ows_machine_id.location} - Standort
  • {ows_machine_id.note} - Notizen
  • {ows_machine_id.category} - Sicherheitskategorie (red/yellow/green)
  • {ows_machine_id.category_icon} - Kategorie-Icon als Emoji (🔴/🟡/🟢)

Tipps für Platzhalter

  • Case-sensitive: {Name} funktioniert nicht, nur {name}
  • Pipe als Trenner: Zwischen Spalten | verwenden
  • Leere Werte: Werden automatisch durch - ersetzt
  • Links: {wiki_doku_link} und {odoo_link} enthalten bereits DokuWiki Link-Syntax
  • Bilder: {image} ist bereits formatiert mit {{:...?300}}
  • ows.machine: Immer mit Präfix ows_machine_id. (z.B. {ows_machine_id.location})

Beispiel-Konfigurationen

Minimalistische Ansicht

Spalten: Name|Status|Kategorie
Daten:   {name}|{status_smiley}|{ows_machine_id.category_icon}

Standard-Ansicht (Default)

Spalten: Status|Sicherheits-Kategorie|Hersteller|Bemerkung|Typ|Bild|Standort|Dokumentation
Daten:   {status_smiley}|{ows_machine_id.category_icon}|{partner_id}|{note}|{model}|{image}|{ows_machine_id.location}|{wiki_doku_link}

Vollständige Ansicht

Spalten: Name|Status|Kategorie|Hersteller|Modell|S/N|Kosten|Garantie|Standort|Bereich|Bild|Doku
Daten:   {name}|{status_smiley}|{ows_machine_id.category_icon}|{partner_id}|{model}|{serial_no}|{cost}|{warranty_date}|{location}|{ows_area}|{image}|{wiki_doku_link}