=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 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()