# Equipment Übersichtstabelle - Setup ## Voraussetzungen Das **datatables Plugin** muss in DokuWiki installiert sein: ```bash # 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): ```python # 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 ```python # 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 ```python 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 ```python 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} ``` ### Beispiel 4: Mit Tags ```python dokuwiki.overview_columns = Status|Name|Typ|Tags|Standort|Dokumentation dokuwiki.overview_column_data = {status_smiley}|{name}|{model}|{tags_list}|{location}|{wiki_doku_link} ``` **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 kann optional automatisch bei Equipment-Änderungen aktualisiert werden. ### Manueller Sync (empfohlen) **Manueller Sync empfohlen für:** - Nach Massen-Importen - Einmal täglich/wöchentlich - Bei strukturellen Änderungen (neue Bereiche, etc.) **Vorteil:** Performanter, keine zusätzliche Last bei jeder Equipment-Änderung ### Automatischer Sync bei Equipment-Änderungen **Was passiert beim Speichern eines Equipment?** 1. **Equipment-Detailseite wird immer aktualisiert** wenn: - Eines der überwachten Felder geändert wurde (siehe unten) - `wiki_auto_sync` für das Equipment aktiviert ist (Standard: `True`) - Equipment bereits synchronisiert wurde (`wiki_synced = True`) 2. **Übersichtstabelle wird zusätzlich aktualisiert** wenn: - Alle Bedingungen von (1) erfüllt sind UND - Systemparameter `dokuwiki.auto_update_overview_table = True` gesetzt ist **Überwachte Felder (lösen Sync aus):** - `name`, `serial_no`, `ows_area_id`, `category_id`, `status_id` - `model`, `partner_id`, `location`, `note`, `image_1920`, `tag_ids` **Aktivierung Übersichtstabellen-Sync:** ```python # In Odoo: Einstellungen → Technisch → Parameter → Systemparameter dokuwiki.auto_update_overview_table = True ``` **Achtung:** - Bei vielen gleichzeitigen Equipment-Änderungen kann dies Performance-Probleme verursachen! - Die komplette Übersichtstabelle wird bei jeder Änderung neu generiert (ca. 156 Zeilen) ### Cronjob (Alternative) ```python # 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 ## Tags (falls maintenance_equipment_tags installiert) - `{tags}` - Komma-separierte Liste aller Tags (z.B. "Holz, CNC, Einweisung erforderlich") - `{tags_list}` - DokuWiki Bullet-Liste mit Zeilenumbrüchen (ideal für Tabellenzellen) - `{tags_count}` - Anzahl der zugewiesenen Tags ## 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 (100px Breite) - Format: `{{:media_id?100}}` - `{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 `{{:...?100}}` - **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} ``` ### Mit Tags ``` Spalten: Name|Status|Tags|Hersteller|Standort|Doku Daten: {name}|{status_smiley}|{tags_list}|{partner_id}|{location}|{wiki_doku_link} ```