My favorites | Sign in
Project Home Issues
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 116: Recurring Events
46 people starred this issue and may be notified of changes. Back to list
Status:  ExportedToGithub
Owner:  ----
Closed:  Aug 2015


Sign in to add a comment
 
Reported by rui.este...@gmail.com, Oct 6, 2009
Hi,

 It will be nice that we can add recurring events. 
 I was trying to use this plugin to display birthdates. 
 To do so i had to generate 101 events (50 year back and 50 year forward) to 
achieve the kind of display i was looking for (i expect that no one will do 
50 clicks in either directions :) ), which is not very nice.

Thanks in advance

Oct 8, 2009
#1 gle...@gmail.com
That would be nice.
Oct 31, 2009
Project Member #2 adamrs...@gmail.com
 Issue 89  has been merged into this issue.
Nov 4, 2009
#3 Otello2...@gmail.com
I am currently doing this by storing the repeating events in a MySQL database. The
events have information like, "Date of start", "Repeat each 365 days" and "Date when
the event should stop repeating itself". If the event should repeat forever, I throw
off something like "Stop repeating in 01/01/2100" haha

When I load the events of the current month via SQL, I use something a WHERE like
"WHERE today > start_date AND today < stop_date", where all of them are date types.
That way I only get the events I care about.

Finally, I check if the repeating event actually happens this month, and if it does,
I create a fake clone event of it in the desired position.

This way, you can do it yourself just with PHP and some common sense.

borrame.jpg
47.1 KB   View   Download
Nov 10, 2009
Project Member #4 adamrs...@gmail.com
 Issue 173  has been merged into this issue.
Jan 6, 2010
#5 kaneuniv...@gmail.com
I JUST found FullCalendar after hacking away at Telerik Scheduler for most of the year.   
The way Telerik Scheduler handles recurrence is by storing a "RecurrenceRule" string in the 
db, then generating "virtual" appointments when needed.

For instance, here's a string representing a birthday:

DTSTART:20100613T000000Z  DTEND:20100614T000000Z RRULE:FREQ=YEARLY;BYMONTHDAY=13;BYMONTH=6    

(I believe this format is part of the iCal standard)

Since FullCalendar is such a fantastic product (wayyyyyy more lightweight and hackable than 
the Telerik Scheduler), I plan to switch to FullCalendar on the front and use this 
RecurrenceRule approach on the backend.

Michael
Jan 23, 2010
#6 kaneuniv...@gmail.com
Actually, I just learned that Telerik is using a proprietary implementation of the iCal  
standard, so I plan to use the C# library 
http://www.ddaysoftware.com/Pages/Projects/DDay.iCal/ instead, in case that's helpful 
for anyone.

Michael
Feb 4, 2010
#7 ZacGross
I think recurrence is best handled on the server side. The overhead associated with 
moving it to the client doesn’t seem worth it especially if you want to add more 
complicated business rules to the recurrence logic.

If people are having problems writing the server side code they could check out 
Martin Fowlers paper on recurring events (http://martinfowler.com/articles.html).
Mar 17, 2010
#8 gcm....@gmail.com
So I've been looking for a calendar tool for my church's website redesign for a while
now, and FullCalendar jumped completely off the page.

It's slick looking, customizable, easy to use, and does everything... EXCEPT
re-occurring events (which as you can imagine, for a church, is every week).

now I understand that we could simply use the GCal plugin to do this for us, but we'd
like to be able to link to specified pages when the item is clicked, and not just a
GCal even info page (which is very limited).
some of you have mentioned the best/only way to do it is with some serverside/mysql
stuff.
unfortunately for a church our size we don't have the in-house knowledge or the
resources available to pay for someone to configure and get it running.

In my limited knowledge of web design and jquery, I'd like to propose an alternative
solution, that could be implemented by Adam, or someone could help him.
Now in my mind, it seems like it would be fairly easy, so tell me if I'm wrong.

The Idea:
- add a new Event Object - "repeat" - with variables "daily, weekly, biweekly,
monthly, yearly" and individual days "sundays, mondays, tuesdays, wednesdays..."
- obviously there would have to be some work on the back end, but the idea is, that
if the 'repeat' object is defined, the script would automatically display the same
event at the different intervals.
- furthermore, if the event was to repeat only during a time period, say march-april
- we would just define the 'start' and 'end' objects (ie - 20100301 to 20100430) -
and then the repeated event would only show up at the defined 'repeat' object
interval, and only between the defined 'start' and 'end' objects.

I tried to make that as clear as possible, hopefully my idea comes across as i intend.

Thank you Adam for such a wonderful script, thank you for the time you've spent on
it, and thank you for all the future enhancements, etc, you decide to release!

Cheers.
-J
Mar 30, 2010
Project Member #9 adamrs...@gmail.com
hey J,
Thank you for your clear explanation. I have always been afraid of all the different types 
of repeating people would want, but it is true, i could start off with a limited set of 
repeating types (probably the same ones that ical supports) and make it extensible so 
developers could introduce repeating types of their own (in the 1.5 plugin architecture i 
am planning). i will keep thinking about it...
May 4, 2010
#10 vanessar...@gmail.com
This feature would be reaaly cool to be in the next version of full calendar. Any 
update on this issue?

By the way, your calendar is great Adam! Thanks a lot for sharing it!!

Best regards,


Jun 3, 2010
#11 DragonsW...@yahoo.com
see attached image for rendering

i have started to make a entry from for recurring events (as i use mysql to save the 
events data in full calendar)

here what i have so far. if you would like to see it please visit
http://dragon-software.info/fullcalendar/Recurring%20Dates/date_post_recurring.php
and for the zipped up project:
http://dragon-software.info/fullcalendar/Recurring%20Dates.rar
mind you this is a work in progress and not completed
it does show the output if you type in the textbox (manually) the strings. im working 
on making jquery build the strings but im working on a hit and miss as im learning 
jquery

any help would be great on getting jquery to work right
hopefully this may help others in building a admin panel for mysql-fullcalendar

recurring_dates_jquery.png
33.9 KB   View   Download
Oct 7, 2010
Project Member #12 adamrs...@gmail.com
(No comment was entered for this change.)
Status: Maybe
Labels: -Type-Defect Type-Enhancement
Oct 7, 2010
Project Member #13 adamrs...@gmail.com
 Issue 635  has been merged into this issue.
Oct 7, 2010
Project Member #14 adamrs...@gmail.com
 Issue 643  has been merged into this issue.
Jan 29, 2011
#15 contact%...@gtempaccount.com
"I think recurrence is best handled on the server side."

I agree. I have been looking at this over the past few days. The best ruby gem I have found is https://github.com/seejohnrun/ice_cube. This allows expressions such as:

rule = Rule.daily(2).day_of_week(:tuesday => [1, -1], :wednesday => [2])
rule.to_ical  # 'FREQ=DAILY;INTERVAL=2;BYDAY=1TU,-1TU,2WE'
rule.to_s     # 'Every 2 days on the last and 1st Tuesdays and the 2nd Wednesday'

Further, "ice_cube implements its own hash-based .to_yaml, so you can quickly (and safely) serialize schedule objects in and out of your data store ".

I think these complexities would be difficult (and probably unnecessary) to incorporate in fullcalendar.

I think there is a logical tie here to  Issue 144  (https://code.google.com/p/fullcalendar/issues/detail?id=144) regarding 'different background colors for business hours'. Business hours are essentially a set of recurring events. Please see my comment on that issue for more information.
Feb 15, 2011
Project Member #16 adamrs...@gmail.com
 Issue 827  has been merged into this issue.
Mar 5, 2011
#17 dwal...@waltonanalytics.com
Well, this issue still plagues the community I see.  Adam, I am encouraged to see you posting here, and so I will attack this issue and post here.  I am going to PUSH this problem even deeper on my attempt.  Since so many in the community are using MySQL to house event data, I think the answer is not just server side, but all the way to the database itself.  I'll post back if I am successful.

Adam, most kind sir, your creation is B E A U T I F U L, and I can't thank you enough for it.  Someday when I make a little "jack" from my app, I'm going to click that "Donate" button of yours for sure.  If I can solve this data-issue, I'll "pay-back" that way too.

Mar 5, 2011
#19 rufus...@gmail.com
I have managed to get daily/weekly/biweekly/monthly recurring events working in python (basically reading an event property called "frequency" which could be stored in SQL or wherever). The weekly/biweekly ones increment by 7/14 days, and could probably be adapted to less standard intervals.

Anyway, it seems to me this python would be easily portable to JS (the rather unelegant python version is attached).

(p.s. rendering works, handling modification of instances of recurring events is more complicated).
recurring.py
3.5 KB   View   Download
Mar 21, 2011
Project Member #20 althaus.it
btw: If you're looking into recurrent events, be sure to take a look into the according RFC [1]. Then you'll know why this should be handle server sided.

I'm working with a Caldav backend [2][3] which does all that nifty RRULE parsing and it's still a pain in the *** to get the frontend editing done. ;)

[1] http://tools.ietf.org/html/rfc5545#section-3.3.10
[2] http://tools.ietf.org/html/rfc4791
[3] http://www.davical.org/
Apr 3, 2011
#21 dwal...@waltonanalytics.com
   Totally agree that this needs handled server-side.  To ask FullCalendar (FC) to do this task would be adding a requirement to load ALL recurring event data into FC for consideration.  If your calendar is small and you are on an un-metered LAN, then maybe this sloppy approach wouldn't matter to you.  As it is, I pay for my bandwidth and thus don't feel like loading FC with all recurring events, expired and otherwise.

   I have attached the functional considerations diagram I am coding from for community review.  I have written some code around PHP's date math functions which looks promising at this juncture, but is still immature.

RecurrenceDiagram.jpg
122 KB   View   Download
Apr 11, 2011
#22 sagarne...@gmail.com
hi,

any one please suggest how it can be done? this is g8 component g8 work Adam 
Jul 19, 2011
#23 soc...@choose.net
I've done this now - you can just render the events for the period of the view visstart and visend, and then recall that duplication script when the view changes (so you don't have to duplicate up a million events).

You'll have to make a custom attribute called "repeat" say, get a filtered array of all repeating events, and then create a loop through the visstart date to visend date stepping by the repeating period, e.g. 7 days. Check each day before writing to it that the original isn't there and just render an event with a "repeat: duplicate" attribute so you don't duplicate the duplicates!

You can do it in jquery or server side by calling an ajax asp/php script on each view change (which very handily automatically passes the visstart and visend dates in the request string for you).

Jquery is fine unless you have daily repeating events in month view and then it has a slight loading delay, or also if you want to do anything else like 'check off' fake instances of a repeating event separately to the original - I found it got too complicated and I had to switch to doing it by asp/ajax.

Hope this helps someone!
Dec 7, 2011
#26 lalo.ran...@gmail.com
I am against the idea of having this processing stuff server sided.

I think client side would be better since event edition, such as having a recurring event moved from one week to other, might need more events to be retrieved form the server and I'm not sure that the js event of editing calendar events can be bound to an ajax request (it could be that way but I honestly have not read all the documentation).

Let's say, for instance, that you have a weekly recurring event starting on January and its repetition ends on April. User is checking February so the event must be shown (but neither the begin nor the end dates are being shown). Then, the user drags the event 2 weeks forward. How can the plugin know whether it must create more "cloned events" to fill the previous weeks? You could modify the db to move the event 2 weeks forward but the client side would have 2 empty weeks in February that could mislead the user feedback, not to mention what the extra server processing needed to retrieve new cloned events (in case it could be done this way). You could retrieve all the event clones(from January to April) but this solution consumes a lot more server processing and would not be realistic for an event with a larger repeating span.

I'm choosing the server side solution since it's the easiest one but, in case I have some spare time, I'd like to implement the client side solution since I think clients could do better and have less impact on the server.

Awesome plugin btw and well documented!
Dec 13, 2011
#27 ds.rach...@gmail.com
I think it would be nice if I implemented into my blog http://juicer.cheapunder.com
Dec 14, 2011
#28 vroma...@gmail.com
for people who want a javascript parser for recurrent rules (RFC 5545) : https://github.com/skyporter/rrule_parser

Jan 9, 2012
Project Member #29 adamrs...@gmail.com
 Issue 1158  has been merged into this issue.
Mar 1, 2012
#32 mayanksi...@gmail.com
Hey guys I'm working on this and hopefully will give you a recursive event support in fullcalendar but it is going to be in .net
Jun 25, 2012
#33 e...@dynamiccode.net
any luck getting the .net recursive events going?
Aug 13, 2013
Project Member #34 adamrs...@gmail.com
(No comment was entered for this change.)
Status: Accepted
Labels: -Type-Enhancement -Priority-Medium Type-Feature
Aug 15, 2013
Project Member #35 adamrs...@gmail.com
 Issue 1378  has been merged into this issue.
Aug 18, 2013
Project Member #36 adamrs...@gmail.com
 Issue 1487  has been merged into this issue.
Aug 18, 2013
Project Member #37 adamrs...@gmail.com
 Issue 1521  has been merged into this issue.
Aug 18, 2013
Project Member #38 adamrs...@gmail.com
 Issue 1583  has been merged into this issue.
Dec 18, 2013
#39 hector.m...@gmail.com
Hello everyone,

Any updates about recursive events?

I add in a json file information about rule  ( "rule": {"FREQ": ["DAILY"]})  without success...

Thank you very much in advanced.
Kind regards.

Héctor Moreno  Blanco
Jan 31, 2014
#40 stiller....@googlemail.com
hi
In my Experience, the most elegant and easiest Format to store Recurring Events is Cron (https://en.wikipedia.org/wiki/Cron). You can find a nice Interface for defining Cron-Jobs at https://github.com/arnapou/jqCron, and a PHP-Cron-Resolver at https://github.com/mtdowling/cron-expression

Management of recurring events could be done parallel to all the d&d-stuff.
Because server-side resolving of such Definitions can be Time-Consuming some caching is highly recommendet on high-traffic sites!

chris
Feb 24, 2015
#41 juans.te...@gmail.com
there appears to be support to expand recurring events, apparently by providing a dow option, but there's not much documentation about it:
https://github.com/arshaw/fullcalendar/blob/master/src/EventManager.js#L628

I'm not really sure how to specify a date range for the event to be expanded
Apr 19, 2015
Project Member #42 adamrs...@gmail.com
 Issue 2477  has been merged into this issue.
May 6, 2015
#43 erikwies...@gmail.com
As pointed on the close  Issue 2477  regarding exceptions for recurring events.

Actually I need to specify recurring background events except for the days defined, by weekday or exact date. 

I would love something for the recurring events not to expand when an especific date or especific dow is defined the same day.



events: [
   {
      // a recurring event
      title: 'Event1',
      start: '10:00',
      end: '14:00',
      exception : ['date', 'dow']
   },
   {
      // specific date event will be the unique for this day, no Event1
      title: 'Event2',
      start: '2015-04-20T11:00',
      end: '2015-04-20:T13;00'
   },
   {
      // specific dow event will be unique for dow 0, no Event1
      title: 'Event3',
      start: '12:00',
      end: '13;00',
      dow: [0],
   }
]

This way, I can specify "generic" recurring events and automatically avoid then when an event with a special dow or specific date is defined.

Aug 21, 2015
Project Member #44 adamrs...@gmail.com
Discussion for this issue has moved to the following URL:
https://github.com/fullcalendar/fullcalendar/issues/387

This is because Google Code is shutting down. Apologies if you are being pestered with these notifications. This is a one-time event.

Happy coding,
Adam
Status: ExportedToGithub
Sign in to add a comment

Powered by Google Project Hosting