I am using Fullcalendar ([url removed, login to view]) to display appointments and availability for several people in a single calendar. I need to enhance Fullcalendar to include better logic when managing availability. I should be able to edit both elements: appointments (events) and availability (background events?) in the calendar, but not at the same time.
The following explanation applies only to week and day view. Availability will not be managed in month view. There won't either be all-day events of any kind. Both appointments and availability will be intervals fully contained between 6am and 10pm.
On the calendar, availability blocks (or events) should be shown with reduced opacity. I want them to fill up the whole width of the day column, so if it’s a single person then there would be one single block showing their availability and if there were two persons, then each availability block will fill 50% of the column, 3 persons would fill up 33⅓, etc.
When one clicks on any of the shaded availability blocks, that takes you to book an appointment for that time when you click. It should be possible to get metadata about the clicked availability block, especially who it belongs to.
There will be a “Manage Availability” button that will give the user the ability to “work on” the availability, editing or adding available times to the schedule. When someone clicks this 'Manage Availability' button calendar will switch mode and then the current appointments will show as opaque and the availability blocks will be a more solid color. Only at this point, can someone drag the availability blocks or edit them. One can not edit availability without hitting this ‘manage availability’ button. In the Manage Availability mode, you can click on a shaded availability block and edit it (because they will be recurring sometimes). You can also drag and drop, and shorten the bottom with the “=” sign that will show up when you hit the manage availability button.
Importantly, the appointments should be shown to 85% overlap the availability blocks. One person appointments will be contained within their individual availability block. There will be ~15% of the availability block showing so that if you had certain appointment from 9-10 and then wanted to book another appointment from 9:30-10:30, then you would click on this sliver of avail to make that apt.