| Issue 116: | Recurring Events | |
| 46 people starred this issue and may be notified of changes. | Back to list |
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
Oct 31, 2009
Issue 89 has been merged into this issue.
Nov 4, 2009
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.
Nov 10, 2009
Issue 173 has been merged into this issue.
Jan 6, 2010
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
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
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
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
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
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
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
Oct 7, 2010
(No comment was entered for this change.)
Status:
Maybe
Labels: -Type-Defect Type-Enhancement
Oct 7, 2010
Issue 635 has been merged into this issue.
Oct 7, 2010
Issue 643 has been merged into this issue.
Jan 29, 2011
"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
Issue 827 has been merged into this issue.
Mar 5, 2011
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
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).
Mar 21, 2011
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
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.
Apr 11, 2011
hi, any one please suggest how it can be done? this is g8 component g8 work Adam
Jul 19, 2011
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
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
I think it would be nice if I implemented into my blog http://juicer.cheapunder.com
Dec 14, 2011
for people who want a javascript parser for recurrent rules (RFC 5545) : https://github.com/skyporter/rrule_parser
Jan 9, 2012
Issue 1158 has been merged into this issue.
Mar 1, 2012
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
any luck getting the .net recursive events going?
Aug 13, 2013
(No comment was entered for this change.)
Status:
Accepted
Labels: -Type-Enhancement -Priority-Medium Type-Feature
Aug 15, 2013
Issue 1378 has been merged into this issue.
Aug 18, 2013
Issue 1487 has been merged into this issue.
Aug 18, 2013
Issue 1521 has been merged into this issue.
Aug 18, 2013
Issue 1583 has been merged into this issue.
Dec 18, 2013
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
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
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
Issue 2477 has been merged into this issue.
May 6, 2015
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
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 |