[geeklog-devel] Calendar Plugin - Recurring Events

Vincent Furia vfuria at gmail.com
Thu Apr 1 13:15:26 EDT 2010


I like the idea of having the client do the work. But what happens if the
client has JavaScript disabled? Will they be unable to view recurring


On Thu, Apr 1, 2010 at 11:01 AM, Anthony Rowles <aqrowles at gmail.com> wrote:

> On Thu, Apr 1, 2010 at 9:38 AM, Samuel Leathers <sam at theleathers.net>
> wrote:
> > I think having a bunch of columns for recurring events could get real
> > ugly. My other thought was what if we mirror the ical structure in the
> > database like so:
> >
> > columns: dtstart, dtend, rrule
> >
> > And then write an ical class with a parser for displaying calendar
> > events. This could be slow (I don't know), but what if we augment this
> > ical backend in the database with a cache?
> I'm also writing a proposal for the calendar plugin, and I'll get into
> this in more detail there, but my design uses this approach for
> calculating recurring events - except I plan to do that work in the
> client (free scaling!).  It'll almost certainly be faster than having
> the server do all the computations, and at the very least the wait
> time will occur after the page has loaded, giving the user something
> to look at while they wait for the events to populate, instead of
> staring at a blank page.
> I plan to store recurring events in a separate table, but with one
> additional field, a list of "exceptions".  When the client requests
> events for a range (say, April 2010), it gets a set of single events
> for that range, and a set of recurring events that might fall in that
> range (based on dtstart/dtend).  It then generates all instances of
> the recurring events that take place within the range it's currently
> displaying (in this case, April 2010), and adds those to its event
> list.  If the user wants to change one instance of a recurring series
> (say, move next week's weekly meeting back one hour because of a
> conflict), we convert the event to a "single event", add it to the
> non-recurring table, and add the date/time to the list of exceptions
> for its parent recurring series.  You just have to maintain a link to
> the parent in the database so you can delete the newly spawned "single
> events" if the user later wants to delete the entire recurring series.
> Here's a really great paper on the topic that describes a flexible way
> to write a recurring event parser (what he calls "temporal
> expressions"): http://martinfowler.com/apsupp/recurring.pdf.  His
> examples are in Java but I think it can be done just fine in
> JavaScript.  Using unions/intersections/differences between sets, you
> can create really powerful and complex recurrences (every 3rd week in
> the summer, etc) fairly easily.
> - Tony
> _______________________________________________
> geeklog-devel mailing list
> geeklog-devel at lists.geeklog.net
> http://eight.pairlist.net/mailman/listinfo/geeklog-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist8.pair.net/pipermail/geeklog-devel/attachments/20100401/1b89983b/attachment.html>

More information about the geeklog-devel mailing list