By Alexandre Cayer on Wednesday, 15 October 2014
Posted in General Issues
Replies 8
Likes 0
Views 636
Votes 0
Hi everyone,

I have been away for few weeks but I have been resuming my dev lately. First of all, congrats for all the amazing work guys for ES and upcoming EB!
Most of my initial custom dev for my invoice system is done and I'm going to incorporate it in ES soon. I have updated to new versions and, as my "hamster was spinning" on how to setup everything, I would like to share my own thoughts on what I would implement in my custom dev.
I know, hacking the code is bad, therefore sharing for future (possible) improvement that could be pull in a future version seem the best idea.

Therefore here it is:

The center of my dev is resume on having clients to be able to be billed on booking meetings on someone's "availability calendar". The event system is coming up pretty good and was thinking using it, plus a "booking availability" addon to see if one is available and then confirm if the rendez-vous can happen.

While thinking how to do such an "available calendar", I saw that they were missing few steps to make that happen. First of all, I see that the moment.js lib (probably from the upgrade to Fullcalendar v2 was done - good job), which greatly helps on timezone and having a good time JS lib. However, we are lacking a recurring event system, which could be easily setup my whole principle in one operation to setup a RecuringRULE like: i'm available from 8 to 17, Monday to Friday, Weekly. RRULE for iCal is something i never worked with before but libs were already created and could be incorporated in not much time.... Ingredients:

a) Bootstrap Fuel UX - Scheduler : UI to incorporate to the events/calendar for recurring process. It already provide the RRULE string from the choice of the user
b) RRULE.js - parser lib for RRULE : push the RRULE and get the table of dates (accept also moment lib). you look only for this month's (current view) date, therefore you use the between method and BOOM work is done.

This would have many more use... ex: When you have one's birthday in your calendar, it is added for life! We can have the list of Christmas, Easter, Thanksgiving for life... etc.

This little setup would see the db event table having 3 kind of event:
a) the one time, date specific, event
b) the recurring events, stored in RRULE
c) a mask to a recurring events, stored as a date specific event

the c) point is something that used to be done by SERIALIZING all dates of a RRULE in a one time, date specific event and then remove the specific event for which you don't want to have in the calendar... However, I found this a nightmare for long sequence of recurring event.

In a case: If my "availability calendar" is pretty much 200 days from 8 to 5 in a year long. It's only one database entry. If i want to change "working hours" from 7 to 5. I can change one value, instead of 200. (of course there is cases that serializing would be better, therefore that shall be an option at the end of the day). Then, If i want to take off on a Friday to go have a beer with coworker and therefore don't take meetings, I could put a MASK EVENT to a recurring event on that specific friday, from 7 to 5, to remove this specific day as available.

If you would want to have a recurring event serialize (ex: Each friday, from 9 to 5, for a Month) and convert a recurring event on 4 specific date event, that parser method shall also be good to then make specific change.

Since RRULE are also iCal's specs, it could also be exported.

Anyway, this is my own 2 cents to where I am leaning to as to be able to make my thing work. Just thought this could be something you guys at StackIdeas and other devs could use to make your own event/calendar system more responsive and closer to a real event/calendar system

Will share next idea later
Hi,

Event in user/calendar is a completely separate element from EasySocial's event.

User calendar application is, as you mentioned, just an application for user. Think of it as a user's personal calendar (albeit that the user has the option to show the agendas publically), but these events in the user application doesn't have the ability to set who gets to join it.

EasySocial Events on the other end, is following the concept of what "Group" is. (In fact, it is using the same structure as what Group is using in the underlaying codes). It is more of a, community event rather than a personal Event.

How I would differentiate them both, for example:

User/Calendar app = "grocery shopping at 2pm"
EasySocial Events = "Birthday Party at 8pm"
·
Thursday, 16 October 2014 12:51
·
0 Likes
·
0 Votes
·
0 Comments
·
Hello Alexandre,

Thanks for your insights on this! We are actually working on Recurring Events and it's probably going to come in later on the 1.3.x branch
·
Thursday, 16 October 2014 00:21
·
0 Likes
·
0 Votes
·
0 Comments
·
Oh quite a good news Mark !
I'll might start another section of custom dev and see what you come up with. On a small note there is a Php port of RRULE.js. Don't know if you implement it server side or client side.

2 minor questions:
a) As for a "multi-layered" calendar/events (like a WORK and PERSONAL layer which can either be triggered together or separately), is there a road map for such option
b) Any way calendar app will be added to group too ?

Btw, if you need any help on code/feature/text, send a mail, I'll be welcome to help out.
·
Thursday, 16 October 2014 00:42
·
0 Likes
·
0 Votes
·
0 Comments
·
Hi,

Regarding the recurring concept, we will be adopting a simpler and straight forward approach to it.

a. I don't quite understand what you mean here.
b. Currently we are focusing on events.
·
Thursday, 16 October 2014 10:26
·
0 Likes
·
0 Votes
·
0 Comments
·
Hey Jason,

As long as it is good, it is ok (RRule, Chained method or ottherwise)

Here is the thing...

-We have an event section with 2 defaults categories (General and Meetings) which was one of the latest addition (and which is great). (For the purpose of the post, I'll call it EVENT1)
-When we go to Calendar app, and click on a date, a modal pops out: Create New event (i.e. EVENT2)

My community will heavily rely on Calendar to manage a lot of things. The EVENT1 will be used as a communication to book event (like a meeting, a rendez-vous, conference call) with it. Therefore EVENT1 will also become an EVENT2. I just created an EVENT1 right now to today's date. When I go back in calendar, this EVENT1 shows on the calendar. However, I can now drag it to tomorrow's date and EVENT1 and EVENT2 doesn't match anymore (this one shouldn't be draggable as to keep consistency between the two). The same thing is happening with the Edit modal screen for that EVENT 2 which doesn't match EVENT1. Therefore, this shall also (edit mode) been taken off for the element when EVENT2 is coming from an EVENT1 type.

Beside these 2 points, this is quite good. We need to have those saved in calendar. However, my question (1) was more like this:

a) Right now, in Calendar, all these EVENTS2 that are created, for an example, to save my personnal rendez-vous and my professionnal rendez-vous aren't distinct. They look all the same and there has not way to differentiated the two. I can even create an EVENT1 that I would like to my calendar which will be with all these EVENTS 2 and maybe this EVENT1 would also fit in my personnal "list" ?

Right now, we only have a EVENT1 category (GENERAL and MEETING), however on my calendar, if one EVENT1 would be created on each of these categories, it could be categorized as part of the BUSINESS list for the Calendar. The list(s) could have a legend with color like in http://demo.joomlathat.com/index.php/calendar-planner/week

Also, for me, the real use of EVENT1 categories are to have my custom fields set as I want to get the information that I want to be displayed. They don't match anything else than this.

Therefore, when you said you were working on Recurring event, I suppose you mean for EVENT1. Therefore:

b) Will the same exact thing be implemented for EVENT2 !?! This is a must for us. I'm sure this is not that much complicated than a copy-pasted in the two function.

However, right now, there are messed up things between EVENT1 and EVENT2 and the use of both Calendar and Events1 are a messed if we want to keep track of it.

My understanding is that the EVENT2 is being left up behind and the Calendar is just an app, not install by default.... Wrong or not, I would like at least to know where this is going since this might affect us a lot is Calendar is not reliable.

Thanks again
·
Thursday, 16 October 2014 12:30
·
0 Likes
·
0 Votes
·
0 Comments
·
Hi Jason,

Thanks to clarify. However it is hard to do not use an event system without an associate calendar to portrayed them. I get the fact that the Events will prioritize and that nothing is really plan for now as for the Calendar app.

I will use a 3rd party app like DPCalendar and try to have the 2 mixed together. Which to have something part of ES and reprogramming such an extension as a ES's app would be quite an extensive task.

My own suggestion, if you do not implement a full fledged calendar app, maybe just a way to link Event's custom fields to a specific 3rd party DB row (i.e. some kind of mapper) could be good and could work for all 3rd party app. (i.e. FEATURE REQUEST )

Alex
·
Thursday, 23 October 2014 05:28
·
0 Likes
·
0 Votes
·
0 Comments
·
Hi Jason - Apologies in advance if this isn't what you mean, but have you seen the mini-calendar in the left column of the events listings page? A full mini-calendar, with navigation, plus event avatar and info on mouseover of the days (and I think everything if you mouse over the month)....
·
Thursday, 23 October 2014 07:20
·
0 Likes
·
0 Votes
·
0 Comments
·
@Andy, there is 2 separate "calendar" view. 1 is under user application, which is actually a "Calendar" app for user. That is separate from the calendar view in the event listing.

@Alexandre, the information that I can provide as of now is:

1. Recurring events are actually creating individual event entries instead of chaining/RRULE. Database optimisation purposes, we do not want to use SQL/PHP to calculate the "recursion" on query.

2. Creating Event will add an entry to the user calendar, but not the other way around. The calendar application only listens to event creation and programmatically creates an entry in the user calendar.

3. As mentioned, user calendar and events are 2 completely separate entity and record. We are not planning to mix them in together as of current progress. What we can do is, the user calendar application pulls the events that you are participating instead. Though I cannot promise if this will be in the release of current stage yet because the development for recurring events is on going, and we will only add in improvements after the initial feature is released.
·
Thursday, 23 October 2014 10:56
·
0 Likes
·
0 Votes
·
0 Comments
·
View Full Post