Hi Bryan,

Thanks for pulling this over to the design list. It's long overdue!

I agree that this is the most common use case.
#2: Dan says that when seeing an end time change that would be before the start time, we should automatically change the end date by a day. This is doable by itself.

I agree with you that Jeffrey's scenario might happen if users make a mistake or plans change but is less common.
#4: Jeffrey says that the opposite behavior might be useful: on a 12/16 9PM - 12/17 1AM event, changing the end time to 11PM should change the end date to 12/16, even though 12/16 9PM - 12/17 11PM is valid.

My only concern is that the "?" behavior is handy for detecting mistakes where users don't mean to enter end-dates that happen before start-dates. Which makes me wonder if it'd be better to simply disallow this behavior altogether and return a ? in the

For example, I enter something from 10AM-2PM and accidentally auto- complete to 2AM, since AM is always the 1st auto-complete option. If we implement #2, Chandler will create a multi-day event from 10AM-2AM instead of warning me that I made a mistake.

This makes me wonder if it might be all-around cleaner to just disallow entering end-times that start before start-times and tell users that they've made an error. This is what Apple iCal does.

But I don't feel strongly about this and think it would be neat to try out #2. So I think we should just do whichever option is most expedient to implement.

Mimi

On May 16, 2007, at 12:17 PM, Bryan Stearns wrote:

hamstar, JeffreyH, philippeB,

I took bug 7522: https://bugzilla.osafoundation.org/show_bug.cgi? id=7522 (start and end time automagically changing wrong)

However, the end of the discussion there isn't conclusive, so I'm moving it back to the design list:

The story so far: Priscilla wanted to enter an event that crossed midnight (eg, starting at 10PM for four hours), by changing the end time (on what was then a 1-hour event starting at 10PM) to "2:00 AM". The existing date/time entry behavior confused her, since the spec (see http://viewcvs.osafoundation.org/docs/trunk/docs/specs/ rel0_6/Detailview-0.6.htm; look for "Under certain circumstances") currently says that "Changing the end date or time such that it becomes earlier than the existing start date+time will change the start date+time to be the same as the end date+time (that is, an @time event, or a single-day anytime event if the event had already been an anytime event)."

The mechanisms behind these fields have certain constraints:
1. We never allow the user to enter dates that would produce an invalid event: the end date/time must always be after the start date/time. (Internally, this is because we represent events as a start date/time and a duration, not as separate start and end date/ times - this works out better for e.g. recurrence & timezone handling.) 2. When automatically changing other fields on entry, do so without any "history": each entry operation looks at the underlying values on the event, and can change them, but can't tell what values they used to have, etc. 3. Our only current way to reject entry in a field is to quietly add a "?" to it (try entering "foo" in a time field to see this). In this situation, the underlying event's value is left unchanged. 4. Anything in the application that subsequently changes an underlying value causes the field to reload, even if it's invalid. The user expects this behavior when dragging an item in the calendar - the detail view fields update during dragging. In this case, though, if the user entered a too-early 2:00 AM in the end time, and we changed that to "2:00 AM ?" without changing the underlying value, and the user changed the end date to the next date, the end time field would reload itself automatically to whatever time was there before the bad 2:00 AM was entered. We could add more special-case code to handle that, but that snowballs.

(Changing these is doable, but could be a kettle of fish we'd prefer to leave closed until after Preview.)

Comments on the bug added several partial proposals:

#2: Dan says that when seeing an end time change that would be before the start time, we should automatically change the end date by a day. This is doable by itself.

#3: Mimi says that we should do what Dan suggests, if the start time is after 5PM. This is also doable.

#4: Jeffrey says that the opposite behavior might be useful: on a 12/16 9PM - 12/17 1AM event, changing the end time to 11PM should change the end date to 12/16, even though 12/16 9PM - 12/17 11PM is valid. This is doable, but I think the cases where it'd be useful are less common (than, say, events that crossed several midnights, which'd be confusing); I think users would have a hard time figuring out the rules from this behavior.

#10: Mimi asks about several different possible alternatives.

I think the simplest thing is to do Dan's #2 proposal, or Mimi's #3 modification of it (though I don't see why 5PM is a magic boundary). This would change the rule in the spec to: "Changing the end time such that it becomes earlier than the existing start date +time, if the start and end dates are the same (and maybe if the start time is >5PM), will increment the end date by one day. Other changes to the end time, or changes to the end date, will change the start date+time to be the same as the end date+time (that is, an @time event, or a single-day anytime event if the event had already been an anytime event)

Comments?
...Bryan

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Design" mailing list
http://lists.osafoundation.org/mailman/listinfo/design

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Design" mailing list
http://lists.osafoundation.org/mailman/listinfo/design

Reply via email to