Originally reported on Google Code with ID 116
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
Reported by rui.estevao on 2009-10-06 15:35:42
Imported with 46 stars.
That would be nice.
Reported by glenza on 2009-10-08 14:00:20
Issue 360 has been merged into this issue.
Reported by adamrshaw on 2009-11-01 01:27:47
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.
Reported by Otello2040 on 2009-11-04 11:59:53
Issue 444 has been merged into this issue.
Reported by adamrshaw on 2009-11-11 05:41:10
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
Reported by kaneuniversal on 2010-01-06 14:35:16
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
Reported by kaneuniversal on 2010-01-24 02:26:58
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).
Reported by ZacGross on 2010-02-04 20:24:03
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
Reported by gcm.pgc on 2010-03-17 16:28:16
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...
Reported by adamrshaw on 2010-03-31 04:12:02
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,
Reported by vanessaramirez30 on 2010-05-04 21:10:53
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
Reported by [email protected] on 2010-06-03 15:45:44
_Reported by adamrshaw on 2010-10-07 20:55:38
MaybeIssue 905 has been merged into this issue.
Reported by adamrshaw on 2010-10-07 23:52:18
Issue 913 has been merged into this issue.
Reported by adamrshaw on 2010-10-08 00:40:27
"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 415 (http://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.
Reported by contact%[email protected] on 2011-01-30 05:49:52
Issue 1096 has been merged into this issue.
Reported by adamrshaw on 2011-02-15 17:33:53
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.
Reported by [email protected] on 2011-03-05 22:39:50
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).
Reported by rufus.wu on 2011-03-05 22:58:48
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/
Reported by althaus.it on 2011-03-21 12:29:54
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.
Reported by [email protected] on 2011-04-03 09:39:23
hi,
any one please suggest how it can be done? this is g8 component g8 work Adam
Reported by sagarneo11 on 2011-04-11 14:35:20
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!
Reported by [email protected] on 2011-07-19 21:30:10
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!
Reported by lalo.random on 2011-12-07 17:53:05
I think it would be nice if I implemented into my blog http://juicer.cheapunder.com
Reported by ds.rachmat on 2011-12-13 14:38:59
for people who want a javascript parser for recurrent rules (RFC 5545) : https://github.com/skyporter/rrule_parser
Reported by vromagno on 2011-12-14 10:36:10
Issue 1425 has been merged into this issue.
Reported by adamrshaw on 2012-01-10 07:43:05
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
Reported by mayanksingh.king on 2012-03-01 16:22:23
any luck getting the .net recursive events going?
Reported by [email protected] on 2012-06-25 18:12:47
Reported by adamrshaw on 2013-08-14 01:54:33
AcceptedIssue 1645 has been merged into this issue.
Reported by adamrshaw on 2013-08-16 05:00:05
Issue 1487 has been merged into this issue.
Reported by adamrshaw on 2013-08-18 19:55:52
Issue 1521 has been merged into this issue.
Reported by adamrshaw on 2013-08-19 01:28:06
Issue 1583 has been merged into this issue.
Reported by adamrshaw on 2013-08-19 02:15:07
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
Reported by hector.moreno.blanco on 2013-12-18 14:58:04
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
Reported by stiller.briefkasten on 2014-01-31 11:31:04
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
Reported by juans.tejada on 2015-02-24 21:09:51
Issue 2477 has been merged into this issue.
Reported by adamrshaw on 2015-04-20 03:26:42
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.
Reported by erikwiesenthal on 2015-05-06 11:28:31
@arshaw , slicedtoad from stackoverflow give a good answer about this problem : http://stackoverflow.com/a/29393128
Hi All,
My Requirement: I have added an event as:
Start Date: 1 Jan 2016
End Date: 31 Dec 2016
Start Time: 10 AM
End Time: 11 AM
Repeat every: 2 Weeks
Repeat Days: Monday, Friday, Sunday
I have found http://fullcalendar.io/docs/display/businessHours/
businesshours for recursive for every week. But I need biweekly.
How can this be achieved?
Please help me urgently.
Thank you.
So is it done or what?
PS: Website is down.
@OzanKurt the issue is open thus not done. If you want to vote for a feature please do so in this way.
Comments such as +1 or “when will this be ready” will not only receive a penalty in the ranking system, they will spam other watchers of the thread
This issue has been addressed in the latest alpha release (4.0.0-alpha.2)
See the blog post »
there's "simple" event recurrence (built-in):
https://fullcalendar.io/docs/v4/recurring-events
in addition to an rrule plugin:
https://fullcalendar.io/docs/v4/rrule-plugin
@arshaw Recurring events are available now ?
@billyshena they are available in an "alpha" release, which is a release that is still "in progress", though it is rather stable and the API won't change much before the official v4. If you feel like playing around with it, please go ahead.
I'm closing this issue to signify that it's implemented (since v4-alpha2). I'll comment on this thread again when v4 is officially released.
Most helpful comment
This issue has been addressed in the latest alpha release (4.0.0-alpha.2)
See the blog post »
there's "simple" event recurrence (built-in):
https://fullcalendar.io/docs/v4/recurring-events
in addition to an rrule plugin:
https://fullcalendar.io/docs/v4/rrule-plugin