Calendar-patch — visuele ruimte-browser¶
RoomVox bevat een optionele patch voor de Nextcloud Calendar-app (v6.2.0) die een visuele ruimte-browser toevoegt. Deze vervangt de standaard minimale resource-picker door een volwaardige ruimte-browse-ervaring.
Wat de patch doet¶
Standaard resource-picker van Nextcloud Calendar¶
De standaard resource-picker in Nextcloud Calendar is minimaal:
- Alleen zoeken — je moet de ruimte-naam kennen om hem te vinden
- Maximaal 3 suggesties — toont slechts 3 ruimtes op basis van capaciteit
- Niet bladeren — je kunt niet alle beschikbare ruimtes in één keer zien
- Geen groepering — geen gebouw-/verdieping-structuur
- Vaste filters — alleen Beamer, Whiteboard, Rolstoeltoegankelijk
Gepatchte ruimte-browser¶
De patch vervangt de resource-picker door een volledige ruimte-browser:

| Functie | Standaard | Gepatcht |
|---|---|---|
| Alle ruimtes zichtbaar | Nee (zoeken of max. 3 suggesties) | Ja, alle ruimtes in één keer |
| Groepering per gebouw | Nee | Ja, per groep uit-/inklapbaar |
| Beschikbaarheids-status | Alleen in zoekresultaten | Per ruimte, real-time |
| Tekst-zoeken | Alleen op naam via DAV-roundtrip | Client-side op naam, gebouw, adres, verdieping |
| Filter "alleen beschikbaar" | Checkbox in het zoekformulier | Schakelaar die de hele lijst filtert |
| Filter min. capaciteit | In het zoekformulier | Inline-filter |
| Gebouw-filter | Nee | Dynamische chips, meerdere selecteerbaar |
| Faciliteit-filter | 3 vaste checkboxen | Dynamische chips op basis van de daadwerkelijke ruimte-kenmerken |
| Ruimte-kaarten | Alleen naam in dropdown | Kaart met status, capaciteit, verdieping, toevoegen/verwijderen |
Ruimte-kaart-component¶

Elke ruimte wordt getoond als een compacte kaart met:
- Ruimte-naam (vet)
- Status-badge: Beschikbaar (groen) / Onbeschikbaar (rood) / Gereserveerd (blauw)
- Capaciteit (bijv. "120p")
- Verdieping/locatie
- Volledig adres bij hover (tooltip)
- Toevoegen/verwijderen-knop (+/-)
- Visuele statussen: toegevoegd (blauwe rand), onbeschikbaar (gedimd)
Installatie¶
Vereisten¶
- Nextcloud Calendar-app v6.2.0 geïnstalleerd
- De map
nc-calendar-patch/in de RoomVox-repository
Uitrollen¶
Het deploy-script:
1. Kloont NC Calendar v6.2.0 naar /tmp/nc-calendar-build
2. Kopieert de patch-bestanden over de stock-bestanden heen
3. Bouwt de hele calendar-app met webpack
4. Uploadt alleen de map js/ naar de server
Terugdraaien¶
Elke uitrol maakt een backup. Om die terug te zetten:
# Restore the backup created during deployment
ssh user@SERVER 'sudo rm -rf /var/www/nextcloud/apps/calendar/js && sudo mv /var/www/nextcloud/apps/calendar/js.bak.YYYYMMDD_HHMMSS /var/www/nextcloud/apps/calendar/js'
Gepatchte bestanden¶
nc-calendar-patch/src/components/Editor/Resources/
ResourceList.vue # Replaces stock completely (613 lines vs 244 stock)
ResourceRoomCard.vue # New component
ResourceListSearch.vue # Unchanged (no longer used)
nc-calendar-patch/src/components/Editor/Invitees/
AttendeeChip.vue # Adds 'Busy at this time' indicator
InviteesChipList.vue # 'Show less' / 'Drop here to make optional'
nc-calendar-patch/src/models/
principal.js # Extended with room metadata fields
resourceProps.js # Room types + facility labels (translatable)
nc-calendar-patch/src/views/
EditFull.vue # Hybrid meeting toggles (In-person / Online (Talk))
Vertalingen¶
Strings die specifiek zijn voor de RoomVox-patch — In-person, Online (Talk), Reserved, Suggested conference rooms, ruimte-types als Meeting room, faciliteit-labels als Projector, enzovoort — zitten niet in de upstream-vertaalbundels van Nextcloud Calendar. De patch haalt ze op via de roomvox-vertaal-namespace met $t('roomvox', '…') (of t('roomvox', '…') uit @nextcloud/l10n in JS-bestanden), zodat ze de vertalingen uit RoomVox' eigen l10n/{lang}.{json,js}-bundels oppikken.
Momenteel meegeleverde talen: Engels (bron), Duits, Nederlands, Frans. Een nieuwe taal toevoegen betekent een l10n/<lang>.{json,js} toevoegen aan de RoomVox-app — er zijn geen wijzigingen in de calendar-app nodig.
Strings die al upstream bestaan (Accepted, Declined, Cancel, Optional, Required, Available, enzovoort) blijven de calendar-namespace gebruiken, zodat ze synchroon blijven met de reguliere vertalingen van Nextcloud.
Data-flow¶
- Bij mount: laad alle ruimte-principals via
principalsStore.getRoomPrincipals - Check beschikbaarheid via
checkResourceAvailability()(free/busy-query) - Groepeer ruimtes op
roomBuildingName, sorteer op beschikbaarheid + naam - Client-side filteren op tekst, gebouw, capaciteit, faciliteiten, beschikbaarheid
- Toevoegen: roep
calendarObjectInstanceStore.addAttendee()aan met de ruimte-data - Verwijderen: zoek de deelnemer op e-mailadres, roep
removeAttendee()aan
DAV-property-mapping¶
De patch breidt principal.js uit om extra DAV-properties te mappen:
| Property | DAV-namespace | Gebruik |
|---|---|---|
roomBuildingName |
{urn:ietf:params:xml:ns:caldav}room-building-name |
Groepering per gebouw + filter-chips |
roomBuildingAddress |
{urn:ietf:params:xml:ns:caldav}room-building-address |
Adres-tooltip |
roomFloor |
{http://nextcloud.com/ns}room-building-story |
Weergave van de verdieping op de ruimte-kaart |
Deze properties worden gevuld vanuit de adres- en ruimte-nummer-velden van de ruimte in RoomVox.
Compatibiliteit met Nextcloud 33¶
Bij het upgraden naar Nextcloud 33:
- Structuur van de calendar-app ongewijzigd — v6.2.0 wordt ook met NC33 meegeleverd
resource_booking_enabled-guard — NC33 voegt een check toe die de resource-picker verbergt als er geen ruimte-backend geregistreerd is. RoomVox registreert een backend, dus de vlag staat automatisch op true- Full-page event-editor — NC33 vervangt de zijbalk door een full-page-layout. De CSS van de patch moet getest worden
@nextcloud/vuev8.x — Geen breaking changes voor de componenten die de patch gebruiktX-NC-DISABLE-SCHEDULING— Nieuwe property die scheduling overslaat. De SchedulingPlugin zou deze moeten respecteren
Bijwerken na NC-upgrades¶
Als Nextcloud of de Calendar-app wordt bijgewerkt:
- Check of de versie van de Calendar-app veranderd is
- Is die ongewijzigd, rol de patch dan opnieuw uit:
./deploy-calendar.sh <target> - Is de Calendar-app wél bijgewerkt, bekijk dan de wijzigingen in de stock-bestanden en werk de patch dienovereenkomstig bij
- Test de ruimte-browser altijd na een update