nextcloud / nextcloud/calendar

Show per-participant FreeBusy slots in Meeting Proposal editor with color-coded hatching

Open
#8,305 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop
Dominant language
JavaScript
Stars
1.2k
Forks
332
Avg merge
16h 13m
Merged PRs (30d)
137

Description

Feature Request

Problem

When creating a Meeting Proposal ("Besprechungsvorschlag erstellen"), the calendar grid currently only shows the organizer's own busy times (yellow hatching). There is no visual indication of other participants' availability in the time grid, even when the organizer has access to their calendars (shared calendars).

This makes it difficult to pre-select time slots that are likely to work for all participants -- the organizer has to guess or manually check each participant's calendar separately.

Proposed Solution

When internal participants are added to a Meeting Proposal, display their FreeBusy data as color-coded hatched blocks in the calendar grid -- one distinct color per participant (e.g. blue, green, orange), similar to how the organizer's own busy times are shown in yellow.

Key elements:

  • Each participant gets a unique hatching color in the time grid
  • A legend in the sidebar maps colors to participant names
  • Overlapping busy times from multiple participants are visually apparent
  • The FreeBusy data is already queried per participant via freeBusyService.js -- this is primarily a frontend rendering change
  • No new backend API needed: the existing CalDAV FreeBusy queries already return per-participant data
Implementation Notes

The data flow already exists -- freeBusyService.js and freeBusySlotService.js fetch FreeBusy information for each attendee. The change would be in ProposalEditor.vue to render these slots as individual FullCalendar background events with per-participant styling, rather than only showing the organizer's own calendar entries.

Contribution

I am happy to submit a PR for this feature if the approach is accepted.

Mockup

Screenshots (current state vs. proposed design) will be attached in a follow-up comment.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with ProposalEditor.vue and trace the per-attendee data returned by freeBusyService.js and freeBusySlotService.js, then inspect how the organizer's existing FullCalendar background events are rendered. The work is done when internal participants' slots appear with distinct colors, overlapping busy periods remain visible, and a sidebar legend identifies each participant.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.