Files
webmanager-mvp/project_docs/UI_FUNCTION_BAR_V2_DESIGN.md
2026-03-11 13:28:18 +01:00

5.4 KiB

UI_FUNCTION_BAR_V2_DESIGN.md

1. Doel en scope

Deze stap beschrijft de evolutie van de huidige onderbalk onder de twee panelen naar een compactere, duidelijkere functiebalk in Midnight Commander-stijl.

Doel:

  • de balk onder de panelen wordt visueel en functioneel herkenbaar als vaste actiebalk
  • acties blijven direct gekoppeld aan het actieve paneel
  • de balk wordt voorbereid op latere functietoets-labeling zonder nu al functietoetsen te implementeren

In scope:

  • compactere horizontale functiebalk onder de twee panelen
  • vaste knopvolgorde
  • duidelijkere relatie tussen actie, actief paneel en selectie
  • ontwerpvoorbereiding voor latere F3-F8 koppeling

Out of scope:

  • geen implementatie van View
  • geen implementatie van Edit
  • geen functietoetsen
  • geen backendwijzigingen
  • geen nieuwe dependencies

2. Positie en layout

De functiebalk staat vast onder de twee panelen, op de plek van de huidige onderste actiebalk.

Layoutdoelen:

  • horizontaal gecentreerd in de beschikbare breedte
  • compact in hoogte
  • kleine, gelijkmatige spacing tussen knoppen
  • visueel duidelijk gescheiden van de paneelzone, maar zonder grote verticale band
  • uitbreidbaar naar extra labels of functietoetsbadges zonder redesign

Voorstel:

  • één compacte horizontale rij
  • de rij krijgt een eigen container binnen de footerzone
  • links en rechts geen brede utilityblokken
  • status/fouttekst blijft buiten of onder de functiebalk, zodat de knoppenrij zelf compact blijft

3. Vaste volgorde van de knoppen

De functiebalk gebruikt exact deze volgorde:

  1. View
  2. Edit
  3. Copy
  4. Move
  5. Rename
  6. MKdir
  7. Delete

Reden:

  • sluit aan op klassieke file-manager verwachtingen
  • groepeert navigatie-/inhoudsacties eerst, daarna muterende file-acties
  • houdt de destructieve actie Delete aan het einde

4. Relatie met toekomstig functietoetsgebruik

De functiebalk moet later zonder structurele herbouw koppelbaar zijn aan:

  • F3 = View
  • F4 = Edit
  • F5 = Copy
  • F6 = Move
  • F7 = MKdir
  • F8 = Delete

Ontwerpimplicatie:

  • elke knop moet later een compacte functietoetsbadge of prefix kunnen tonen
  • Rename blijft voorlopig zonder vaste F-toets in deze mapping
  • deze stap implementeert nog geen keyboardbindingen of badgegedrag

5. Relatie met actief paneel en selectie

Alle acties in de functiebalk werken altijd vanuit het actieve paneel.

Geen selectie

  • View: disabled
  • Edit: disabled
  • Copy: disabled
  • Move: disabled
  • Rename: disabled
  • MKdir: enabled
  • Delete: disabled

Exact 1 selectie

  • View: later afhankelijk van file-type; in deze stap nog niet functioneel
  • Edit: later afhankelijk van file-type; in deze stap nog niet functioneel
  • Copy: enabled als huidige backendactie geldig is
  • Move: enabled als huidige backendactie geldig is
  • Rename: enabled
  • MKdir: enabled
  • Delete: enabled

Meerdere selecties

  • View: disabled
  • Edit: disabled
  • Copy: enabled als alle geselecteerde items compatibel zijn met bestaande backendscope
  • Move: enabled als alle geselecteerde items compatibel zijn met bestaande backendscope
  • Rename: disabled
  • MKdir: enabled
  • Delete: enabled

File- of directoryselectie

  • Copy en Move blijven gebonden aan de huidige backendbeperking
  • zolang backend file-only is voor copy/move:
    • selectie met directories blokkeert Copy
    • selectie met directories blokkeert Move
  • Delete blijft werken volgens bestaande backendregels
  • Rename volgt bestaande rename-semantiek

Belangrijk:

  • de functiebalk toont niet alleen acties, maar reflecteert ook duidelijk welke acties in de huidige context geldig zijn via enabled/disabled toestand

6. Scopebeperking

Nog niet in deze stap:

  • geen View-implementatie
  • geen Edit-implementatie
  • geen functietoetsen
  • geen backendwijzigingen
  • geen extra UI-frameworks

Deze ontwerpstap gaat dus alleen over de functiebalk zelf, niet over nieuwe actiecapaciteit.


7. Impactanalyse

Waarschijnlijk te wijzigen bestanden:

  • webui/html/index.html
  • webui/html/style.css
  • webui/html/app.js
  • webui/backend/tests/golden/test_ui_smoke_golden.py

Regressierisico

Belangrijkste risico's:

  • huidige actieknoppen verliezen hun correcte enabled/disabled logica
  • de relatie tussen actief paneel en actiebalk wordt visueel minder duidelijk
  • keyboard- en klikflows kunnen breken als knop-ids of handlers onzorgvuldig worden vervangen
  • extra compactheid kan ten koste gaan van leesbaarheid op smallere schermen

Mitigatie:

  • bestaande action handlers hergebruiken waar mogelijk
  • ids voor bestaande werkende acties stabiel houden of gecontroleerd migreren
  • disabled-logica centraal laten in plaats van per knop ad hoc
  • smoke tests uitbreiden met de nieuwe functiebalkstructuur

8. Teststrategie

Smoke/regressietests

Aan te passen:

  • test_ui_smoke_golden.py

Nieuwe of aangepaste checks:

  • functiebalkcontainer aanwezig onder de panelen
  • knopvolgorde in HTML komt overeen met het ontwerp
  • bestaande actieknoppen voor werkende backendacties blijven aanwezig
  • assets blijven correct gemount

Handmatige validatie

Te valideren bij implementatie:

  • functiebalk blijft compact op desktop
  • functiebalk blijft bruikbaar op smallere breedte
  • actief paneel blijft bepalend voor de actiecontext
  • disabled/enable toestand klopt bij:
    • geen selectie
    • 1 selectie
    • meerdere selecties
    • gemixte file/directory-selectie
  • bestaande keyboard- en klikselectieflow blijft intact