Calendar Spec

Authors: Sheila Mooney Last edited: May 8, 2005 2:02 PM - Version 1.6 Creation date: April 25, 2005
Reviewers:

Overview

Goals and Objectives

The primary driver for the 0.6 release is to get a usable calendar out to the public quicker in order to satisfy a key need as well as build adoption momentum. What do we mean by a usable calendar? Supporting a usable calendar involves prioritizing features that fit into 3 key areas.

Background

Our original 0.5 goal was to achieve some form of calendar dogfood. By the time we reached the end of 0.5, we realized that although we had introduced many new calendar features such as Anytime Events, there were quite a few bugs that needed to be addressed in order to make things work in a more complete manner. A substancial part of the 0.6 calendar work items center around fixing these bugs and getting what features we have today working well before adding additional features.

High Level Use Cases

The following is a list of the most common basic workflows that we want to support in the 0.6 release.

1. Managing a personal calendar. This includes running Chandler out of the box, locating your calendar and performing all basic calendaring tasks.

2. Creating a new calendar

3. Subscribing to an Office Calendar

4. Viewing more than one calendar at a time.

5. Subscribing to someone else's personal calendar.

Definitions

Requirements

Recurrence: For 0.6 we need to support the display, creation, deletion and modification of recurring events.

Event Types: We need to support the full range of event types available on conventional calendars such as multi-day events.

UI Polish and Improvements: The calendar is required to support a higher level of UI polish than other areas of Chandler which will be addressed by fixing a number of existing bugs.

Sharing: There should be display support for read only calendars as well as read write.

Overlays: In 0.6 we will have the ability for a user to active multiple calendars and overlay them in the calendar view. This includes a widget in the sidebar to activate and deactive a calendar as well as a visual representation in the calendar view that shows which calendar is selected (on top) and which ones are in the background.

Colors: For 0.6 we will have colors associated with all calendars. Colors are assigned automatically by default but the user will have an affordance for changing the color of a calendar. There will be a visual on the sidebar that displays that displays the color associated with a specific collection

Timezones: We should support some ability to display and manipulate timezone information in 0.6 (this feature is still being defined and scoped).

Mini Calendar: We are going to extend the mini calendar to have a preview area, display busy bars and show multiple months.

Assumptions

High-level Decisions

Since the 0.6 release is focused on achieving a usable calendar we will be attempting to optimize for the basic calendar workflows in order to prioritize features for this release. In order to focus on this goal there may be a need to simplify some of the features as they apply to other  areas of the application. For instance, although our architecture supports a more general feature such as overlaying collections of items, we will spend more time on the details with respect to the calendar behavior. More general behavior will be addressed in another document.

Terminology

This is a list of some new terminology introduced in this document.

Activated Calendars
Is a calendar that has been included to be displayed in the calendar view (overlayed).
Selected Calendars
This is the calendar that is on top and corresponds to the highlighted/selected collection in the sidebar.
Selected Event
This is the event that is currently selected (clicked on) in the calendar view with the corresponding detail view displayed.

User Interface / Interaction

Calendar Cleanup and Bugs

The following are a list of bugs that are part of the initial 0.6 calendar cleanup tasks.

These items are related to fixing query bugs.

These are printing related issues.

These bugs relate to the calendar header area.

These bugs relate to the main calendar view and body.

Creating Events on a Calendar

Events can be created in Chandler using a number of different scenarios which are described below. I have also addressed the creation of other types of items since there really wasn't another appropriate place to put this information.

Calendar app area:

If we are currently viewing a calendar, ie: the calendar app button is selected and we are displaying the week or day view, all events are created in-place on the selected calendar using the following mechanisms. The selected calendar is in-front and is defined by the collection selected in the sidebar.

When creating new items, the selected collection in the sidebar DOES NOT change and we assume that any new event we create is added to that particular collection.

Selecting Ctrl-N OR clicking the File->New item->New Event  menu creates a new event in-place on the calendar. Depending on the current state of the calendar (what we have selected), the event is created in the following location.

Double click directly on the calendar view itself to create a new event in-place on particular day at that specific time. All 4 date time fields are filled in with data. The default event duration is 1 hour.

If we are in the calendar app and create a mail, task or note item we are automatically jumped to the All app area and the new item displays in the summary table view. The selected collection remains the same.

Mail, Task or All app areas:

If we have any other application bar button selected (All, Mail, Tasks) creating new items has the following behavior.

Calendar Views and Overlays

For 0.6, we are introducing 2 new concepts for the calendar; Selected Calendars and Activated Calendars.

The properties for selected calendars are as follows

The properties for activated calendars are as follows.

The properties for selected events are as follows.

The following screenshot displays both selected and activated calendars. The legend is as follows.


Calendar Colors

For 0.6 we are going to support the assignment of colors to a particular calendar. Out of the box, a color is automatically assigned to the user's personal calendar. Any new collections that are created and populated with events will also be assigned a color from a pre-defined list. This color is displayed at the top left hand corner of the calendar view for a particular collection.

The user can use the color selector in the top left hand corner to change the color of any calendar. There is nothing preventing the user from choosing the same color for 2 different calendars.

As indicated above, in 0.6 we will be giving the user the ability to view more than one calendar by overlaying them on top of one another. In Chandler, this ability will apply to any collection however only the calendar behavior will be described in this spec. It does not matter whether or not these are personal calendars or shared calendars. The colors for non-active calendars will be a different saturation than those for the active calendar.

As mentioned in a section above, events in the All collection should behave like any other calendar. If that calendar has the focus, we should display all events that exist in the All collection in the assigned color.

[Sheila] We are not going to add the specific list of all colors and hues that will be part of our pick list of colors. Mimi and Alec will be iterating on this for some time as well as tweaking them so they look right on all platforms. Due to this constant change, it doesn't seem worthwhile to keep updating them in the spec.

Calendar Lozenge

There will be several visual changes to the calendar lozenge for 0.6 that are listed below.

Activation Checkbox Behavior

The checkboxes to the left of the sidebar items display which calendars are activated as well as the current color assigned to a particular calendar.

Due to the icons present for All, In and Out, the behavior is slightly different than for other collections. Since the primary use cases for 0.6 will involve overlaying the My Calendar collection as well as user-defined calendars, we didn't feel that this was an issue.

Checkbox behavior for other calendars (My Calendar, imported, user-defined)

Checkbox behavior for All, In, Out

Events on More Than One Calendar

Currently Chandler supports the ability for items to live in more than one collection. We would like to continue to support this feature for 0.6. When we support activated calendars we will have to address the display of events that may live in more than one calendar that is overlayed.

A few important notes about event display and calendar hierarchy.

If we select the All collection it should display a composite of all events.

[Sheila] PLEASE NOTE: we are still closing on the specific design and behavior for the All collection for 0.6. For now, this is still unreasolved and the behavior described above may change. We expect to close on this in the next couple of weeks.


[Sheila] There has been some discussion around a 0.6 simplifying assumption to allow events to only exist on a single calendar. We have decided not to go ahead and impose this constraint for events in 0.6. Currently our app and architecture supports the ability to have items in more than one collection and there is some concern that the cost of preventing this will be higher than addressing the use cases for which this might be problematic (ie: overlays above). For now we would like to proceed by addressing any issues caused by having events on multiple calendars in a very simple, straightforward manner. If we run into a number of difficult problems that will cause distraction and interfere with acheiving our 0.6 goals, we will revisit this simplifying assumption again. In the meantime, design will work with engineering to understand the exact cost of restricting items to a single collection so we can better compare the tradeoffs.

Displaying a Read Write vs a Read Only Calendar

In 0.6, we will be supporting the ability to subscribe to calendars for which we may have read only or read write privileges. This will have to be handled in the display so it's apparent to the user what they can and cant' do.

If a user subscribes to a read write calendar, there will be no special handling in the UI. A sharing icon will appear in the sidebar and the user will be able to manipulate all aspects of the calendar, add events, colors, change event detail, delete items and perform all other tasks that they would be able to had they created this calendar in Chandler. All fields in the detail view will be editable.

If a user subscribes to a read only calendar, there will be an indication in the detail view for each event that you cannot edit this event. There will be no visual indication on the main calendar view that this is a read only calendar. The icon for read only event appears at the top of the detail view next to the mark-up bar and is shown below.

Detail view read only icon:


For a read only calendars the following actions/edits are allowed.

For a read only calendars, the following actions will popup a dialog indicating to the user that they do not have permissions to edit events this calendar.

All the detail view fields should appear with data in read only mode. The stamping buttons should be disabled. Alternatively we could popup a readonly dialog when the user attemps to stamp this event.

Display of Chandler Event Types

The following is an inventory of all the types of events we will support in Chandler and how they should look on the main calendar view.

Event Type Example Display Details
Regular Events 4 datetime fields have values
05/01/05 1:00pm to 05/01/05 2:00pm
D shaped lozenge on the main calendar area
Regular Multi-day Events 4 datetime fields have values
05/01/05 2:00pm - 05/02/05 9:00am
D shaped lozenge style on main calendar area
@ Time Events Specific date and start time values, end date= start date but no end time specified
Round lozenge on main calendar area
Anytime Event Specific start and end date (same) but no time in either time field.
Round lozenge in anytime area at the top of the calendar
All-Day Events All-day checkbox selected, start date=end date, time fields are hidden
D shaped lozenge in anytime area at the top of the calendar
All-Day Multi-Day Events All-day checkbox selected, end date later than start date, time fields hidden
D shaped lozenge in top anytime area spanning multiple days
Anytime Multi-day Events End date later than start date, no start time or end time Round shaped lozenge in top anytime area spanning multiple days

Keyboard Shortcuts and Event Selection

It will greatly enhance the user experience if all the standard keyboard shortcuts were available for selecting, deleting, copying and pasting events within the Chandler calendar view. The delete behavior should be according to the Item Removal and Deletion spec. This list was added to the calendar spec since we are most concerned with usability of the calendar for 0.6. If it seems appropriate to have this work for any summary table view, then we should support that. We should be able to.

Recurring Events

We are going to support a logical subset of recurring events in 0.6. This includes the display of imported recurring events as well as creating and modifying recurring events in Chandler. There is a separate spec available that details the recurrence UI as well as the underlying architecture.

Timezones

We are still defining the timezone workflows for 0.6. This section will be updated or refer to a more detailed spec.

[Sheila] I have a request to move forward with a timezone UI design and spec for us to discuss and scope out. Mimi and Sheila need to sit down and think about the design so the details are not yet available.

Anytime/All-day Area

The anytime or all-day area at the top of the calendar is where the user's anytime, all-day and multi-day events appear. Events appear in this area by.
In order to have events appear in this area, you can create them in place by double-clicking or you can modify information in the detail view (ie:select the all day checkbox).

There a 3 states for the all-day area: min (1/2 an event is visible - just enough for you to add in-place), max - all events are visible with a small space at the end so you can add a new one, user defined drag - where the user can position the bottom divider to any position within min/max.

If you run Chandler OOTB (new repository), the all-day area should be minimized and have a maximize arrow on the right that you can click on. In this case, if we have no events in the area, maximizing simply makes it a bit large ie: 2x, only enough to give the user some visual feedback. When you maximize, the arrow is replaced by the minimize one and clicking this will return the area to it's min state.

As you create new events in the all-day area, the size should adjust to fit them as they are created. In this case, it adjust to the max size so the arrow should be replaced by the min arrow.

As you change collections or go forward and back weeks in the calendar, the all-day area should adjust to display only the events that are in that particular view.  For example, if I have a week with 4 items on one day, it maximizes to this. If I go forward one week and I have no events in the all-day area, it should be minimized since there is nothing for that particular week view. This is very difficult for 0.6 and we have decided not to do it.

If the user adjusts the size, this should stick as we change weeks, views.

Mini Calendar

The mini calendar work for 0.6 falls into 2 categories. The first involves fixing a number of existing bugs and adding some enhancements to improve the visual feedback. The set of work items include the addition of new features such as the busy bars, the preview area and multiple month display.

The visual tweaks and enhancements for the mini calendar are summarized in the following bugs.

The new preview area above the mini calendar allows the user to view their confirmed events for a particular day when they are not in the calendar application and using other areas of the application. The preview area has the following behavior.

The mini calendar busy bars are used to give a user an at-a-glance view of how busy their days are for a particular month. The busy bars appear on the mini calendar at all times regardless of what summary table view is displayed (calendar or list view). The busy bars indicate relative busyness on a particular day based on all the users confirmed events (everything in the All collection). This is constant and is not affected by what collection is selected in the sidebar or what collections are overlayed.

Rather than detail an exact algorithm for calculating the busy bars display, Mimi and Jed will iterate on this to determine the best representation.

Currently, we can only display a single month at a time in the mini calendar. This will be expanded to allow for the display of multiple months by sliding up the bar above the preview area in the mini calendar. We will allow the user to slide this bar up to 80% of the sidebar height. There should be a snap feature that automatically snaps the mini calendar up or down a month so only full months are displayed. We will allow the user to slide the mini calendar bar down to the bottom (less than 1 calendar height). In this case, it will snap the mini calendar closed.

[Sheila] Mimi feels we can stage this multiple month display feature a number of ways. We decided that she and Jed will iterate on this together and we will update the spec as needed.



Importing and Exporting Calendars

Although Chandler 0.5 supports some import/export capabilities, this should be expanded to support the full range of event types available in Chandler 0.6. This includes All-Day, Multi-Day, Anytime, @ Time and Regular events. We will also support importing and exporting recurrence information which is also addressed in detail in the 0.6 recurrence spec.

Code Design

[Sheila] Alec can determine what info should go here if appropriate.

Specials Considerations

QA / Test

API / Developer Platform

Security

Internationalization / Localization

Accessibility

Build / Install

Cuts

We have decided to defer the following features from the 0.6 calendaring goals.

Useful Links

History

Author Edit date Description
Sheila Mooney April 27, 2005 First Draft
Sheila Mooney May 1, 2005 First Draft Edits
Sheila Mooney May 3, 2005 Second Draft - edits after spec review
Sheila Mooney May 8, 2005 Second Draft - minor modification to support keyboard shortcuts
Sheila Mooney May 8, 2005 Missed a few edits in the previous commit.