Bugs (in order of importance)
- Superbug - Bug#10907 A hybrid weekly/monthly calendar view
- Bug#11409: Month View: Clicking in empty space and typing causes a traceback.
- Bug#11356: Provide visual feedback for calendar navigation
- Bug#11408: Calendar view should persist as users navigates between collections
- Bug#11387: Spacing and Visual Bugs in the Month View
Nice to haves / Non-critical
- Bug#11371: Shift/Cmd/ Ctrl-Click to select multiple weeks in Month View
- Bug#11319: Dynamically adjust how many all-day / multi-day items we display in Month View
- Bug##11410: Month View: Keep order of all-day / multi-day events consistent
FUTURE
- Bug#11357: Integrate week view navigation with the way month view navigation works
- Bug#11411: Month View: Edit events in-place
Tentative Design Planning Proposal
Scenarios:
- See my travelling schedule
- People who only have 1 or 2 events per day
Phasing Proposal
Read-only Month View
- Show one month at a time
- Back and Forward buttons to navigate months
- Remove Week column in Month View
- Remove Dates in the Day columns
- May Day column headers just plain text
- State for selected day (use same grey color as in Week View)
- State for 'Today' (use same grey color as in Week View)
Display details
- Calendar date goes in the upper right hand corner
- Match color of text to the collection it belongs in
- 1 line of text per event
- Display start-time and event title (use superscript for minutes)
- Rectangular, color lozenge for all-day, anytime and multi-day events with white text
All-dayness
- Limit all-day / anytime events to 2 per cell
- Add ellipses above the all-day / anytime lozenges if there are more than 2
...
[All-day Event 1]
[All-day Event 2]
Timed events
- Timed events that span multiple days only appear on the Month Calendar as an entry on the start date
In-place navigation in the calendar
- Buttons for each day
- Buttons for each week
- Button for the month
Button States
Unselected - Rollover effect
- Text stays black
- Rectangular block highlight that is the same color as the highlight color used in the mini-cal (80% grey I think)
Unselected - Mousedown effect
- Text stays black
- Rectangular block highlight darkens to 66% grey #a8a8a8
Selected
- Text is white
- Rectangular block highligh darkens to 50% grey (same as 'work hours' portion of timeline)
Selected- Rollover effect
- Text stays white
- Rectangular block highlight that is the same color as the highlight color used in the mini-cal (80% grey I think)
Selected- Mousedown effect
- Text stays white
- Rectangular block highlight darkens to 66% grey #a8a8a8
Note: The Month Header does
not need to have selected states.
- Month-Integrated_Navigation.png:
Week and Day View Integration
This design will transition nicely to allow users to build custom multi-week views. However, it does call for quite a few changes to the current Week/Day view. It is also intended to minimize strange 'jolting' as the user transitions from Month/Multi-Week view to Week/Day view.
- Change the header so that it only displays the day of the week, not the date
- Move day-navigation into the "all-day area"
- Custom all-day area splitter
- Add in tabs for Week navigation
- Week_View-Integrated_Navigation.png:
- Day_View-Integrated_Navigation.png:
Visual Design
- Grey lines should be same grey as the column dividers in the week view
- No column header widget (just text) for 'Days of the Week'
- Days of the Week: Medium (12pt), Black, Center-aligned
- Event text: XSmall (10pt) and same color as the left side of the gradient for the 'selected' version of the event lozenge
- Numbers for dates: Medium (12pt), Black
Read-Write Month View
- Integrate navigation to move between month, week and day view
- Select and view details of event from month view
- Visual feedback for selected event
- Visual cue for Today
Nice to Haves (in order of 'User Experience' importance)
- Bug#11319 Dynamically display as many all-day events as possible
- DONE Display events for days that are not 'technically' in the month when a month begins/ends mid-week
- Create new event in-place
- Select/multi-select to drag and drop
- Resize all-day / multi-day events
- Edit new event in-place
- Month/Year pulldown to navigate months
- DONE Noon bar (only display this if there are timed events)
- Bar graph to show 'morphology' of schedule for each day
- Display ellipsis and # of missing events if there are too many events (+3)
- Color swatches to indicate membership in multiple collections
- Visual cues to differentiate 'on-top' calendar versus underlayed calendar events
- Visual cue to distinguish between all-day and anytime events
- Expando weeks
- Zoom in/out 'contextualized' navigation
Navigation between views via Mini-Calendar?
- Click on Month title for Month View
- Click on rectangular week handles for Week View
- Click on specific day for Day View
- This gives us the flexibility we need for moving towards user-definable multi-month/week/day views, etc...
- It could also be re-used in the Table View to define date parameters for what you see in the view
- Mini-Cal-Selectors-Week.png:
- Mini-Cal-Selectors-Month.png:
End Goal: Facilitate full-range of planning workflows
- Expanding & collapsing weeks so users can build custom multi-week views
Implementation Notes
- try to keep controller and view separate?
- MultiWeekView and MultiWeekViewController
Things Current View Does Okay
- async notifiactions
- onIdle
- recurrence aware
- update
- cache canvasItems
Using GraphicsContext
- cache paths
- have a path for one week of boxes and re-use it over and over
- separate ends of lozenges - don't want them to scale
- try to be smarter about cached items
- keep more data? 6 weeks before and after today? 8?