open_workshop/open_workshop_dokuwiki
matthias.lotz de317f46e6 feat(dokuwiki): Add equipment overview table with DataTables
- Add _generate_overview_table_row() to generate table row per equipment
- Add action_sync_overview_table() for fast overview page sync
- Add new sync mode 'Übersichtstabelle aktualisieren' in wizard
- Add config parameters for overview page and template IDs
- Add overview_url field to wizard result view
- Columns: Name (linked), Status, Security Category, Area, Location, Image
- Performance: Single page update without iterating all equipment
- Include DokuWiki template and setup documentation
- Requires DokuWiki DataTables plugin for sortable/filterable table
- Fix: Use status_id instead of equipment_status_id
2025-12-19 20:40:29 +01:00
..
data feat(dokuwiki): Add equipment overview table with DataTables 2025-12-19 20:40:29 +01:00
models feat(dokuwiki): Add equipment overview table with DataTables 2025-12-19 20:40:29 +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): Add partner fields, editable smileys, category icon, and mass sync wizard 2025-12-14 20:55:21 +01:00
__manifest__.py Add automated maintenance equipment status creation with smileys 2025-12-18 20:53:04 +01:00
hooks.py feat(dokuwiki): Implement single-page DokuWiki integration 2025-12-13 21:50:19 +01:00
README.md feat(dokuwiki): Add equipment overview table with DataTables 2025-12-19 20:40:29 +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. Template-Seite in DokuWiki erstellen

Erstelle die Seite: werkstatt:ausruestung:uebersicht_template

Kopiere den Inhalt aus: dokuwiki_uebersicht_template.txt

Wichtige Platzhalter:

  • {{EQUIPMENT_TABLE_ROWS}} → Wird durch Tabellenzeilen ersetzt
  • {{SYNC_DATETIME}} → Wird durch Sync-Zeitstempel ersetzt

2. Odoo Konfiguration (optional)

Falls andere Seitennamen gewünscht:

# In Odoo: Einstellungen → Technisch → Parameter → Systemparameter

dokuwiki.overview_page_id = werkstatt:ausruestung:uebersicht
dokuwiki.overview_template_id = werkstatt:ausruestung:uebersicht_template

3. Erste Synchronisation

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

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

Features

DataTables Funktionen

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

Spalten

Spalte Inhalt Quelle
Name Link zur Detail-Seite maintenance.equipment.name
Status In Betrieb, Wartung, etc. equipment_status_id
Sicherheits-Kategorie 🟢 Grün / 🟡 Gelb / 🔴 Rot ows_category
Bereich Holzwerkstatt, Metallwerkstatt, etc. ows_area_id
Standort Freier Text location
Bild Thumbnail 50px image_1920

Performance

  • Schneller Sync: Keine DB-Iteration über 134 Einträge
  • Generiert nur eine Seite (statt 134 einzelne)
  • DokuWiki cached die Seite automatisch

Troubleshooting

"Template-Seite nicht gefunden"

→ Erstelle werkstatt:ausruestung:uebersicht_template in DokuWiki

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()

Workflow

┌─────────────────┐
│ Odoo Equipment  │
│ (134 Einträge)  │
└────────┬────────┘
         │
         ▼
┌─────────────────────────┐
│ _generate_overview_     │
│ table_row()             │  ← Pro Equipment eine Zeile
│ (maintenance_equipment) │
└────────┬────────────────┘
         │ 134 Zeilen
         ▼
┌─────────────────────────┐
│ Template laden          │
│ werkstatt:ausruestung:  │
│ uebersicht_template     │
└────────┬────────────────┘
         │
         ▼
┌─────────────────────────┐
│ Placeholder ersetzen    │
│ {{EQUIPMENT_TABLE_ROWS}}│
│ {{SYNC_DATETIME}}       │
└────────┬────────────────┘
         │
         ▼
┌─────────────────────────┐
│ Seite speichern         │
│ werkstatt:ausruestung:  │
│ uebersicht              │
└─────────────────────────┘

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:

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 (🔴/🟡/🟢)