=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Design specs for EventQueue
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1. About
-----------------------------
EventQueue is a web based calendar. It has the ability to read from
multiple sources (Currently Local DB, Remote and local .ics files),
amalgamate those sources and then then present them either as HTML, .ics
(ICalendar), RSS, Atom and HCalendar.
2. Existing implementation
-----------------------------
http://thegestalt.org/simon/eq
It's a bit gash.
There is also the achingly retro NTK theme
http://thegestalt.org/simon/eq?theme=ntk
Interesting days
# multiple events arranged chronologically
http://thegestalt.org/simon/eq/2005/07/21
# multiple all day events
http://thegestalt.org/simon/eq/2005/10/03
3. Design needs
-----------------------------
EventQueue has 4 principle HTML views
3.1 Year
~~~~~~~~~~~~~~~~~~~~~
This shows the months of the year and whether or not they have events in
them.
It might be possible to have a view more like this
http://www.ntlf.com/images/calendar.jpg
3.2 Month
~~~~~~~~~~~~~~~~~~~~~
Currently this shows the days of the month and whether they have events
in them.
It might be possible to have a Month To View Calendar (i.e all days of
the month and their events visible)
3.3 Day
~~~~~~~~~~~~~~~~~~~~~
Currently a day arranges like so
All day and floating events (such as birthdays) are placed at the top of
the day and are coloured differently.
Other events are arranged chronologically, arranging themselves from
left to right to fit in. This is currently done using Javascript.
At the moment when you roll over an event currently the details are
shown in a
at the bottom of the page. Ideally they would be shown
in floating pop-up wherever the mouse position is.
3.4 An Event
~~~~~~~~~~~~~~~~~~~~~
Events are slightly weird in ICalendar world.
Every event has an ID but multiple events may have this ID as long as
one of them is recurring. In that case events with the same ID act as
'notes' to the original event and its attributes are layered on top of
the original event.
For example if the original event recurred every Monday which had the
title "I hate mondays" and the description "They suck" then we could
have two additional events that started on Monday 5th of Decemeber, 2005
and Monday the 12th of December.
The Monday the 5th event could override the title with "First monday of
the month - especially hateful" but the second one could override the
title with "My birthday!" (it's not really, I'm struggling for examples)
and the description with "w00t!".
This makes displaying an event page slightly tricky and I have two ways
of solving it.
o Only the original - Only show the original recurring event
o All notes - Show the original recurring event and all notes
It would be interesting to see what iCal does with this.
Currently there is no way of creating or deleting events hwoever this is
not a limitation with the code rather a lack of interface imagination.
4. The Future
-----------------------------
4.1 Week
~~~~~~~~~~~~~~~~~~~~~
I'd like to add 5 view which would be 'Week' this would be similar to
Day except 7 days would be aligned horizontally.
4.2 AJAX-a-go-go
~~~~~~~~~~~~~~~~~~~~~
It would be nice if we could be a bit more AJAXy particularly when it
came to events. In particular
o Move events using drag and drop
o Be able to delete and create events with reloading
o Being able to alter descriptions etc of events
o Being able to change the recurrence of an event (this, potentially,
leaves orphan events and might have to be dealt with)
5. RESTian vs AJAX
-----------------------------
There is, it seems, a Soloman-esque dilemma that faces those who wish to
be buzzword compliant.
Obviously a meaningul RESTian URL is important. EventQueue already has
this
# Show a year
http://thegestalt.org/simon/eq/2005/
# Show a month
http://thegestalt.org/simon/eq/2005/12
# Show a day
http://thegestalt.org/simon/eq/2005/12/15
# Show an event
http://thegestalt.org/simon/eq/event/palm-datebook-007f9a18-000076
However certain aspects of navigation - moving between days, weeks
and months and years would certainly nefeit from some AJAX which would
leave the url inconsistent with the display.
Week in particular would benefit from the ability to slide left and
right by one day.
I suspect, however, that a meaningful URL is more important.
One solution, from Tom Insam, is to have
http://thegestalt.org/simon/eq/#2005/12/15
etc and parse the parts in Javascript.
6. Printable CSS
-----------------------------
It would be nice to be able to print out a page and have a nice
printable version rather than a navigation heavy one
7. Help for the disabled
-----------------------------
The other major downside with AJAX is that it can make things a bugger
on things like screen readers (and mobile devices for that matter)
8. Embeddable in Blogs
-----------------------------
It would also be nice if one could easily embed some Javascript and
related gubbins in a page such that your calendar could appear in mini
along side ones blog roll, book list, now playing, Flickr stream etc
etc.
If needed the Javascript could be hosted within the EventQueue
installation and would generate any necessary variables on the fly
(such as the home URL). The Javascript would then perform a
XMLHTTPRequest call to go fetch the data.
How do Flickr and Google et al get round the security model? Host the
Javascript on their own site?
Hmm, after some checking they just do a document.write()