From 1d0f18e19ef67d653c03034b12cea2e289da2ec6 Mon Sep 17 00:00:00 2001 From: Hajbok Robert Date: Mon, 27 Nov 2017 12:50:39 +0000 Subject: [PATCH] Added support for eventOrder and released version 1.0.1 --- .../Properties/AssemblyInfo.cs | 4 +-- .../Properties/AssemblyInfo.cs | 4 +-- .../Scripts/fullcalendar.helper.js | 27 ++++++++++---- .../Scripts/fullcalendar.helper.min.js | 2 +- .../FullCalendar.UI/Views/Home/Index.cshtml | 36 ++++++++++++------- .../Views/Home/_FullCalendar.cshtml | 1 + .../FullCalendar/FullCalendarParameters.cs | 11 ++++++ .../FullCalendar/Properties/AssemblyInfo.cs | 4 +-- .../Scripts/fullcalendar.helper.js | 27 ++++++++++---- .../Scripts/fullcalendar.helper.min.js | 2 +- README.md | 2 +- 11 files changed, 84 insertions(+), 36 deletions(-) diff --git a/FullCalendarMVC/FullCalendar.MVC4/Properties/AssemblyInfo.cs b/FullCalendarMVC/FullCalendar.MVC4/Properties/AssemblyInfo.cs index e4eb6f4..ec56772 100644 --- a/FullCalendarMVC/FullCalendar.MVC4/Properties/AssemblyInfo.cs +++ b/FullCalendarMVC/FullCalendar.MVC4/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/FullCalendarMVC/FullCalendar.MVC5/Properties/AssemblyInfo.cs b/FullCalendarMVC/FullCalendar.MVC5/Properties/AssemblyInfo.cs index 986d020..325b97a 100644 --- a/FullCalendarMVC/FullCalendar.MVC5/Properties/AssemblyInfo.cs +++ b/FullCalendarMVC/FullCalendar.MVC5/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.js b/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.js index f1bb2be..9dd93e3 100644 --- a/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.js +++ b/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.js @@ -123,6 +123,7 @@ eventbordercolor: { name: 'eventBorderColor', type: 'string' }, eventtextcolor: { name: 'eventTextColor', type: 'string' }, nextdaythreshold: { name: 'nextDayThreshold', type: 'duration' }, + eventorder: { name: 'eventOrder', type: 'custom' }, eventrenderwait: { name: 'eventRenderWait', type: 'integer' }, eventrender: { name: 'eventRender', type: 'callback' }, eventafterrender: { name: 'eventAfterRender', type: 'callback' }, @@ -165,7 +166,7 @@ calendarObj[calendarParameter.name] = parseData(data[item], calendarParameter); $(calendars[i]).removeAttr("data-fc-" + item.substring(2)); }); - console.log(calendarObj); + //console.log(calendarObj); $(calendars[i]).fullCalendar(calendarObj); } }); @@ -194,12 +195,7 @@ parseCallbackData(JSON.parse(data.replace(/\'/g, '"')).function); case 'callback/string': case 'function/string': - var value = JSON.parse(data.replace(/\'/g, '"')).function; - try { - return parseFunctionData(value); - } catch (e) { - return value; - } + return parseFunctionStringData(JSON.parse(data.replace(/\'/g, '"')).function); case 'function/object': var returnValue = null; try { @@ -249,6 +245,14 @@ return eval('(' + data + ')'); } + function parseFunctionStringData(data) { + try { + return parseFunctionData(data); + } catch (e) { + return data; + } + } + function parseCallbackData(data) { try { return parseFunctionData(data); @@ -327,6 +331,15 @@ }); }); return obj; + case 'eventOrder': + var obj = parseObjectData(data); + if (obj.length == 1) { + return parseFunctionStringData(obj[0]); + } + for (i = 0; i < obj.length; i++) { + obj[i] = parseFunctionStringData(obj[i]); + } + return obj; } } diff --git a/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.min.js b/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.min.js index 6feeddc..ef25797 100644 --- a/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.min.js +++ b/FullCalendarMVC/FullCalendar.UI/Scripts/fullcalendar.helper.min.js @@ -1 +1 @@ -(function(n){function s(n,i){var o,e;switch(i.type){case"boolean":case"string":case"integer":case"float":return n;case"duration":return moment.duration(n);case"moment":return moment(n,"MM/DD/YYYY hh:mm:ss");case"array":case"object":return r(n);case"boolean/object":return u(n);case"boolean/function":return h(n);case"integer/boolean":return typeof n=="number"||typeof n=="boolean"?n:n=="True";case"callback":f(JSON.parse(n.replace(/\'/g,'"')).function);case"callback/string":case"function/string":o=JSON.parse(n.replace(/\'/g,'"')).function;try{return t(o)}catch(s){return o}case"function/object":e=null;try{e=t(n)}catch(s){e=r(n)}finally{return e}case"custom":return c(n,i.name)}}function r(t){return n.isArray(t)?t:JSON.parse(t.replace(/\'/g,'"'))}function u(n){try{return typeof n=="boolean"?n:r(n)}catch(t){return console.error(t),null}}function h(n){try{return typeof n=="boolean"?n:t(n)}catch(i){return null}}function t(n){return eval("("+n+")")}function f(n){try{return t(n)}catch(i){return console.error(i),null}}function c(n,i){var s,o;switch(i){case"defaultView":return n.charAt(0).toLowerCase()+n.slice(1);case"customButtons":return o=JSON.parse(n.replace(/\'/g,'"')),s={},Object.keys(o).forEach(function(n){s[n]={};Object.keys(o[n]).forEach(function(i){o[n][i]&&i==="text"?s[n][i]=o[n][i]:o[n][i]&&i==="click"?s[n][i]=t(o[n][i]):o[n][i]!==null&&(s[n][i]=u(o[n][i]))})}),s;case"height":case"contentHeight":return n==="auto"||n==="parent"?n:n.match(/px$/)?parseInt(n.slice(0,-2)):t(n);case"views":return o=r(n),Object.keys(o).forEach(function(n){Object.keys(o[n]).forEach(function(i){if(o[n][i]&&i==="visibleRange")try{o[n][i]=t(o[n][i])}catch(r){}})}),o;case"events":return e(n);case"eventSources":return o=r(n),Object.keys(o).forEach(function(n){Object.keys(o[n]).forEach(function(i){if(o[n][i]&&i==="constraint")try{o[n][i]=r(o[n][i])}catch(s){}else if(o[n][i]&&(i==="eventDataTransform"||i==="success"||i==="error"))o[n][i]=f(o[n][i]);else if(o[n][i]&&i==="events")o[n][i]=e(o[n][i]);else if(o[n][i]&&i==="data"){var u=null;try{u=t(o[n][i])}catch(s){u=o[n][i]}finally{o[n][i]=u}}})}),o}}function e(n){var i=null;try{return t(n)}catch(u){}try{i=r(n)}catch(u){return n}return Object.keys(i).forEach(function(n){Object.keys(i[n]).forEach(function(t){if(i[n][t]&&t==="constraint")try{i[n][t]=r(i[n][t])}catch(u){}else i[n][t]&&t==="additionalFields"&&(Object.keys(i[n][t]).forEach(function(r){i[n][r]=i[n][t][r]}),i[n][t]=undefined)})}),i}var o={header:{name:"header",type:"object"},footer:{name:"footer",type:"object"},custombuttons:{name:"customButtons",type:"custom"},buttonicons:{name:"buttonIcons",type:"boolean/object"},themesystem:{name:"themeSystem",type:"string"},themebuttonicons:{name:"themeButtonIcons",type:"boolean/object"},bootstrapglyphicons:{name:"bootstrapGlyphicons",type:"boolean/object"},firstday:{name:"firstDay",type:"integer"},isrtl:{name:"isRTL",type:"boolean"},weekends:{name:"weekends",type:"boolean"},hiddendays:{name:"hiddenDays",type:"array"},fixedweekcount:{name:"fixedWeekCount",type:"boolean"},weeknumbers:{name:"weekNumbers",type:"boolean"},weeknumberswithindays:{name:"weekNumbersWithinDays",type:"boolean"},weeknumbercalculation:{name:"weekNumberCalculation",type:"function/string"},businesshours:{name:"businessHours",type:"boolean/object"},shownoncurrentdates:{name:"showNonCurrentDates",type:"boolean"},height:{name:"height",type:"custom"},contentheight:{name:"contentHeight",type:"custom"},aspectratio:{name:"aspectRatio",type:"float"},windowresizedelay:{name:"windowResizeDelay",type:"integer"},eventlimit:{name:"eventLimit",type:"integer/boolean"},eventlimitclick:{name:"eventLimitClick",type:"function/string"},viewrender:{name:"viewRender",type:"callback"},viewdestroy:{name:"viewDestroy",type:"callback"},dayrender:{name:"dayRender",type:"callback"},windowresize:{name:"windowResize",type:"callback"},timezone:{name:"timezone",type:"string"},now:{name:"now",type:"moment"},views:{name:"views",type:"custom"},defaultview:{name:"defaultView",type:"custom"},alldayslot:{name:"allDaySlot",type:"boolean"},alldaytext:{name:"allDayText",type:"string"},slotduration:{name:"slotDuration",type:"duration"},slotlabelformat:{name:"slotLabelFormat",type:"string"},slotlabelinterval:{name:"slotLabelInterval",type:"duration"},snapduration:{name:"snapDuration",type:"duration"},scrolltime:{name:"scrollTime",type:"duration"},mintime:{name:"minTime",type:"duration"},maxtime:{name:"maxTime",type:"duration"},sloteventoverlap:{name:"slotEventOverlap",type:"boolean"},handlewindowresize:{name:"handleWindowResize",type:"boolean"},listdayformat:{name:"listDayFormat",type:"string"},listdayaltformat:{name:"listDayAltFormat",type:"string"},noeventsmessage:{name:"noEventsMessage",type:"string"},defaultdate:{name:"defaultDate",type:"moment"},nowindicator:{name:"nowIndicator",type:"boolean"},visiblerange:{name:"visibleRange",type:"function/object"},validrange:{name:"validRange",type:"function/object"},dateincrement:{name:"dateIncrement",type:"object"},datealignment:{name:"dateAlignment",type:"string"},duration:{name:"duration",type:"object"},daycount:{name:"dayCount",type:"integer"},locale:{name:"locale",type:"string"},timeformat:{name:"timeFormat",type:"string"},columnformat:{name:"columnFormat",type:"string"},titleformat:{name:"titleFormat",type:"string"},buttontext:{name:"buttonText",type:"object"},monthnames:{name:"monthNames",type:"array"},monthnamesshort:{name:"monthNamesShort",type:"array"},daynames:{name:"dayNames",type:"array"},daynamesshort:{name:"dayNamesShort",type:"array"},weeknumbertitle:{name:"weekNumberTitle",type:"string"},displayeventtime:{name:"displayEventTime",type:"boolean"},displayeventend:{name:"displayEventEnd",type:"boolean"},eventlimittext:{name:"eventLimitText",type:"function/string"},daypopoverformat:{name:"dayPopoverFormat",type:"string"},navlinks:{name:"navLinks",type:"boolean"},navlinkdayclick:{name:"navLinkDayClick",type:"callback/string"},navlinkweekclick:{name:"navLinkWeekClick",type:"callback/string"},dayclick:{name:"dayClick",type:"callback"},eventclick:{name:"eventClick",type:"callback"},eventmouseover:{name:"eventMouseover",type:"callback"},eventmouseout:{name:"eventMouseout",type:"callback"},selectable:{name:"selectable",type:"boolean"},selecthelper:{name:"selectHelper",type:"boolean"},unselectauto:{name:"unselectAuto",type:"boolean"},unselectcancel:{name:"unselectCancel",type:"string"},selectoverlap:{name:"selectOverlap",type:"boolean/function"},selectconstraint:{name:"selectConstraint",type:"object"},selectallow:{name:"selectAllow",type:"callback"},selectmindistance:{name:"selectMinDistance",type:"integer"},selectlongpressdelay:{name:"selectLongPressDelay",type:"integer"},select:{name:"select",type:"callback"},unselect:{name:"unselect",type:"callback"},events:{name:"events",type:"custom"},eventsources:{name:"eventSources",type:"custom"},alldaydefault:{name:"allDayDefault",type:"boolean"},startparam:{name:"startParam",type:"string"},endparam:{name:"endParam",type:"string"},timezoneparam:{name:"timezoneParam",type:"string"},lazyfetching:{name:"lazyFetching",type:"boolean"},defaulttimedeventduration:{name:"defaultTimedEventDuration",type:"duration"},defaultalldayeventduration:{name:"defaultAllDayEventDuration",type:"duration"},forceeventduration:{name:"forceEventDuration",type:"boolean"},eventdatatransform:{name:"eventDataTransform",type:"callback"},loading:{name:"loading",type:"callback"},eventcolor:{name:"eventColor",type:"string"},eventbackgroundcolor:{name:"eventBackgroundColor",type:"string"},eventbordercolor:{name:"eventBorderColor",type:"string"},eventtextcolor:{name:"eventTextColor",type:"string"},nextdaythreshold:{name:"nextDayThreshold",type:"duration"},eventrenderwait:{name:"eventRenderWait",type:"integer"},eventrender:{name:"eventRender",type:"callback"},eventafterrender:{name:"eventAfterRender",type:"callback"},eventafterallrender:{name:"eventAfterAllRender",type:"callback"},eventdestroy:{name:"eventDestroy",type:"callback"},editable:{name:"editable",type:"boolean"},eventstarteditable:{name:"eventStartEditable",type:"boolean"},eventdurationeditable:{name:"eventDurationEditable",type:"boolean"},dragrevertduration:{name:"dragRevertDuration",type:"integer"},dragopacity:{name:"dragOpacity",type:"float"},dragscroll:{name:"dragScroll",type:"boolean"},eventoverlap:{name:"eventOverlap",type:"boolean/function"},eventconstraint:{name:"eventConstraint",type:"object"},eventallow:{name:"eventAllow",type:"callback"},longpressdelay:{name:"longPressDelay",type:"integer"},eventlongpressdelay:{name:"eventLongPressDelay",type:"integer"},eventdragstart:{name:"eventDragStart",type:"callback"},eventdragstop:{name:"eventDragStop",type:"callback"},eventdrop:{name:"eventDrop",type:"callback"},eventresizestart:{name:"eventResizeStart",type:"callback"},eventresizestop:{name:"eventResizeStop",type:"callback"},eventresize:{name:"eventResize",type:"callback"},droppable:{name:"droppable",type:"boolean"},dropaccept:{name:"dropAccept",type:"function/string"},drop:{name:"drop",type:"callback"},eventreceive:{name:"eventReceive",type:"callback"}};n(function(){var t=n(".fc"),r,u;for(i=0;i - var EventClick = function (calEvent, jsEvent, view) { - alert('Event: ' + calEvent.title); - alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY); - alert('View: ' + view.name); + var EventClick = function (calEvent, jsEvent, view) { + alert('Event: ' + calEvent.title); + alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY); + alert('View: ' + view.name); - // change the border color just for fun - $(this).css('border-color', 'red'); - }; + // change the border color just for fun + $(this).css('border-color', 'red'); + }; - var EventResize = function (event, delta, revertFunc) { - alert(event.title + " end is now " + event.end.format()); + var EventResize = function (event, delta, revertFunc) { + alert(event.title + " end is now " + event.end.format()); - if (!confirm("is this okay?")) { - revertFunc(); - } + if (!confirm("is this okay?")) { + revertFunc(); + } + } + var EventOrder = function (a, b) { + if (a.id < b.id) { + return -1; + } + if (a.title > b.title) { + return 1; } - *@ + // a must be equal to b + return 0; + } + *@
diff --git a/FullCalendarMVC/FullCalendar.UI/Views/Home/_FullCalendar.cshtml b/FullCalendarMVC/FullCalendar.UI/Views/Home/_FullCalendar.cshtml index 39874f4..50df40c 100644 --- a/FullCalendarMVC/FullCalendar.UI/Views/Home/_FullCalendar.cshtml +++ b/FullCalendarMVC/FullCalendar.UI/Views/Home/_FullCalendar.cshtml @@ -352,4 +352,5 @@ // } // } //}; + //settings.EventOrder = new string[] { "start", "EventOrder" }; }) diff --git a/FullCalendarMVC/FullCalendar/FullCalendarParameters.cs b/FullCalendarMVC/FullCalendar/FullCalendarParameters.cs index f819cb0..f381a3b 100644 --- a/FullCalendarMVC/FullCalendar/FullCalendarParameters.cs +++ b/FullCalendarMVC/FullCalendar/FullCalendarParameters.cs @@ -657,6 +657,17 @@ public class FullCalendarParameters /// public TimeSpan NextDayThreshold { get; set; } + /// + /// Determines the vertical ordering events that have the same dates / times. + /// By default, FullCalendar decides that events with longer durations and earlier start times are sorted above other events. However, events often have the same exact start time and duration, which is especially true for all-day events. By default, when this happens, events are sorted alphabetically by title. eventOrder provides the ability to override this behavior. + /// This setting accepts a few different arguments: + /// (1) a name of an Event Object property, like "title". This can be the name of a non-standard field. Sorting will happen in ascending order. If prefixed with a minus sign like "-title", sorting will happen in descending order. + /// (2) a comma-separated string of property names, like "title,propA,-propB". + /// (3) a function that accepts two arguments and returns -1 or 1, similar to sort's compare function. + /// (4) an array of property names and functions like [ "title", "-propA", myFunc ]. + /// + public string[] EventOrder { get; set; } + /// /// The amount of milliseconds to wait after an operation, before rendering events. /// When this value is specified as a millisecond number value, the calendar will begin to wait after any operation that might result in an event rerendering, such as renderEvent and updateEvent. After this time has passed, the calendar will render all events together. This reduces the number of rerenders, for performance reasons. diff --git a/FullCalendarMVC/FullCalendar/Properties/AssemblyInfo.cs b/FullCalendarMVC/FullCalendar/Properties/AssemblyInfo.cs index a418b78..66679a1 100644 --- a/FullCalendarMVC/FullCalendar/Properties/AssemblyInfo.cs +++ b/FullCalendarMVC/FullCalendar/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.js b/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.js index f1bb2be..9dd93e3 100644 --- a/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.js +++ b/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.js @@ -123,6 +123,7 @@ eventbordercolor: { name: 'eventBorderColor', type: 'string' }, eventtextcolor: { name: 'eventTextColor', type: 'string' }, nextdaythreshold: { name: 'nextDayThreshold', type: 'duration' }, + eventorder: { name: 'eventOrder', type: 'custom' }, eventrenderwait: { name: 'eventRenderWait', type: 'integer' }, eventrender: { name: 'eventRender', type: 'callback' }, eventafterrender: { name: 'eventAfterRender', type: 'callback' }, @@ -165,7 +166,7 @@ calendarObj[calendarParameter.name] = parseData(data[item], calendarParameter); $(calendars[i]).removeAttr("data-fc-" + item.substring(2)); }); - console.log(calendarObj); + //console.log(calendarObj); $(calendars[i]).fullCalendar(calendarObj); } }); @@ -194,12 +195,7 @@ parseCallbackData(JSON.parse(data.replace(/\'/g, '"')).function); case 'callback/string': case 'function/string': - var value = JSON.parse(data.replace(/\'/g, '"')).function; - try { - return parseFunctionData(value); - } catch (e) { - return value; - } + return parseFunctionStringData(JSON.parse(data.replace(/\'/g, '"')).function); case 'function/object': var returnValue = null; try { @@ -249,6 +245,14 @@ return eval('(' + data + ')'); } + function parseFunctionStringData(data) { + try { + return parseFunctionData(data); + } catch (e) { + return data; + } + } + function parseCallbackData(data) { try { return parseFunctionData(data); @@ -327,6 +331,15 @@ }); }); return obj; + case 'eventOrder': + var obj = parseObjectData(data); + if (obj.length == 1) { + return parseFunctionStringData(obj[0]); + } + for (i = 0; i < obj.length; i++) { + obj[i] = parseFunctionStringData(obj[i]); + } + return obj; } } diff --git a/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.min.js b/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.min.js index 6feeddc..ef25797 100644 --- a/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.min.js +++ b/FullCalendarMVC/FullCalendar/Scripts/fullcalendar.helper.min.js @@ -1 +1 @@ -(function(n){function s(n,i){var o,e;switch(i.type){case"boolean":case"string":case"integer":case"float":return n;case"duration":return moment.duration(n);case"moment":return moment(n,"MM/DD/YYYY hh:mm:ss");case"array":case"object":return r(n);case"boolean/object":return u(n);case"boolean/function":return h(n);case"integer/boolean":return typeof n=="number"||typeof n=="boolean"?n:n=="True";case"callback":f(JSON.parse(n.replace(/\'/g,'"')).function);case"callback/string":case"function/string":o=JSON.parse(n.replace(/\'/g,'"')).function;try{return t(o)}catch(s){return o}case"function/object":e=null;try{e=t(n)}catch(s){e=r(n)}finally{return e}case"custom":return c(n,i.name)}}function r(t){return n.isArray(t)?t:JSON.parse(t.replace(/\'/g,'"'))}function u(n){try{return typeof n=="boolean"?n:r(n)}catch(t){return console.error(t),null}}function h(n){try{return typeof n=="boolean"?n:t(n)}catch(i){return null}}function t(n){return eval("("+n+")")}function f(n){try{return t(n)}catch(i){return console.error(i),null}}function c(n,i){var s,o;switch(i){case"defaultView":return n.charAt(0).toLowerCase()+n.slice(1);case"customButtons":return o=JSON.parse(n.replace(/\'/g,'"')),s={},Object.keys(o).forEach(function(n){s[n]={};Object.keys(o[n]).forEach(function(i){o[n][i]&&i==="text"?s[n][i]=o[n][i]:o[n][i]&&i==="click"?s[n][i]=t(o[n][i]):o[n][i]!==null&&(s[n][i]=u(o[n][i]))})}),s;case"height":case"contentHeight":return n==="auto"||n==="parent"?n:n.match(/px$/)?parseInt(n.slice(0,-2)):t(n);case"views":return o=r(n),Object.keys(o).forEach(function(n){Object.keys(o[n]).forEach(function(i){if(o[n][i]&&i==="visibleRange")try{o[n][i]=t(o[n][i])}catch(r){}})}),o;case"events":return e(n);case"eventSources":return o=r(n),Object.keys(o).forEach(function(n){Object.keys(o[n]).forEach(function(i){if(o[n][i]&&i==="constraint")try{o[n][i]=r(o[n][i])}catch(s){}else if(o[n][i]&&(i==="eventDataTransform"||i==="success"||i==="error"))o[n][i]=f(o[n][i]);else if(o[n][i]&&i==="events")o[n][i]=e(o[n][i]);else if(o[n][i]&&i==="data"){var u=null;try{u=t(o[n][i])}catch(s){u=o[n][i]}finally{o[n][i]=u}}})}),o}}function e(n){var i=null;try{return t(n)}catch(u){}try{i=r(n)}catch(u){return n}return Object.keys(i).forEach(function(n){Object.keys(i[n]).forEach(function(t){if(i[n][t]&&t==="constraint")try{i[n][t]=r(i[n][t])}catch(u){}else i[n][t]&&t==="additionalFields"&&(Object.keys(i[n][t]).forEach(function(r){i[n][r]=i[n][t][r]}),i[n][t]=undefined)})}),i}var o={header:{name:"header",type:"object"},footer:{name:"footer",type:"object"},custombuttons:{name:"customButtons",type:"custom"},buttonicons:{name:"buttonIcons",type:"boolean/object"},themesystem:{name:"themeSystem",type:"string"},themebuttonicons:{name:"themeButtonIcons",type:"boolean/object"},bootstrapglyphicons:{name:"bootstrapGlyphicons",type:"boolean/object"},firstday:{name:"firstDay",type:"integer"},isrtl:{name:"isRTL",type:"boolean"},weekends:{name:"weekends",type:"boolean"},hiddendays:{name:"hiddenDays",type:"array"},fixedweekcount:{name:"fixedWeekCount",type:"boolean"},weeknumbers:{name:"weekNumbers",type:"boolean"},weeknumberswithindays:{name:"weekNumbersWithinDays",type:"boolean"},weeknumbercalculation:{name:"weekNumberCalculation",type:"function/string"},businesshours:{name:"businessHours",type:"boolean/object"},shownoncurrentdates:{name:"showNonCurrentDates",type:"boolean"},height:{name:"height",type:"custom"},contentheight:{name:"contentHeight",type:"custom"},aspectratio:{name:"aspectRatio",type:"float"},windowresizedelay:{name:"windowResizeDelay",type:"integer"},eventlimit:{name:"eventLimit",type:"integer/boolean"},eventlimitclick:{name:"eventLimitClick",type:"function/string"},viewrender:{name:"viewRender",type:"callback"},viewdestroy:{name:"viewDestroy",type:"callback"},dayrender:{name:"dayRender",type:"callback"},windowresize:{name:"windowResize",type:"callback"},timezone:{name:"timezone",type:"string"},now:{name:"now",type:"moment"},views:{name:"views",type:"custom"},defaultview:{name:"defaultView",type:"custom"},alldayslot:{name:"allDaySlot",type:"boolean"},alldaytext:{name:"allDayText",type:"string"},slotduration:{name:"slotDuration",type:"duration"},slotlabelformat:{name:"slotLabelFormat",type:"string"},slotlabelinterval:{name:"slotLabelInterval",type:"duration"},snapduration:{name:"snapDuration",type:"duration"},scrolltime:{name:"scrollTime",type:"duration"},mintime:{name:"minTime",type:"duration"},maxtime:{name:"maxTime",type:"duration"},sloteventoverlap:{name:"slotEventOverlap",type:"boolean"},handlewindowresize:{name:"handleWindowResize",type:"boolean"},listdayformat:{name:"listDayFormat",type:"string"},listdayaltformat:{name:"listDayAltFormat",type:"string"},noeventsmessage:{name:"noEventsMessage",type:"string"},defaultdate:{name:"defaultDate",type:"moment"},nowindicator:{name:"nowIndicator",type:"boolean"},visiblerange:{name:"visibleRange",type:"function/object"},validrange:{name:"validRange",type:"function/object"},dateincrement:{name:"dateIncrement",type:"object"},datealignment:{name:"dateAlignment",type:"string"},duration:{name:"duration",type:"object"},daycount:{name:"dayCount",type:"integer"},locale:{name:"locale",type:"string"},timeformat:{name:"timeFormat",type:"string"},columnformat:{name:"columnFormat",type:"string"},titleformat:{name:"titleFormat",type:"string"},buttontext:{name:"buttonText",type:"object"},monthnames:{name:"monthNames",type:"array"},monthnamesshort:{name:"monthNamesShort",type:"array"},daynames:{name:"dayNames",type:"array"},daynamesshort:{name:"dayNamesShort",type:"array"},weeknumbertitle:{name:"weekNumberTitle",type:"string"},displayeventtime:{name:"displayEventTime",type:"boolean"},displayeventend:{name:"displayEventEnd",type:"boolean"},eventlimittext:{name:"eventLimitText",type:"function/string"},daypopoverformat:{name:"dayPopoverFormat",type:"string"},navlinks:{name:"navLinks",type:"boolean"},navlinkdayclick:{name:"navLinkDayClick",type:"callback/string"},navlinkweekclick:{name:"navLinkWeekClick",type:"callback/string"},dayclick:{name:"dayClick",type:"callback"},eventclick:{name:"eventClick",type:"callback"},eventmouseover:{name:"eventMouseover",type:"callback"},eventmouseout:{name:"eventMouseout",type:"callback"},selectable:{name:"selectable",type:"boolean"},selecthelper:{name:"selectHelper",type:"boolean"},unselectauto:{name:"unselectAuto",type:"boolean"},unselectcancel:{name:"unselectCancel",type:"string"},selectoverlap:{name:"selectOverlap",type:"boolean/function"},selectconstraint:{name:"selectConstraint",type:"object"},selectallow:{name:"selectAllow",type:"callback"},selectmindistance:{name:"selectMinDistance",type:"integer"},selectlongpressdelay:{name:"selectLongPressDelay",type:"integer"},select:{name:"select",type:"callback"},unselect:{name:"unselect",type:"callback"},events:{name:"events",type:"custom"},eventsources:{name:"eventSources",type:"custom"},alldaydefault:{name:"allDayDefault",type:"boolean"},startparam:{name:"startParam",type:"string"},endparam:{name:"endParam",type:"string"},timezoneparam:{name:"timezoneParam",type:"string"},lazyfetching:{name:"lazyFetching",type:"boolean"},defaulttimedeventduration:{name:"defaultTimedEventDuration",type:"duration"},defaultalldayeventduration:{name:"defaultAllDayEventDuration",type:"duration"},forceeventduration:{name:"forceEventDuration",type:"boolean"},eventdatatransform:{name:"eventDataTransform",type:"callback"},loading:{name:"loading",type:"callback"},eventcolor:{name:"eventColor",type:"string"},eventbackgroundcolor:{name:"eventBackgroundColor",type:"string"},eventbordercolor:{name:"eventBorderColor",type:"string"},eventtextcolor:{name:"eventTextColor",type:"string"},nextdaythreshold:{name:"nextDayThreshold",type:"duration"},eventrenderwait:{name:"eventRenderWait",type:"integer"},eventrender:{name:"eventRender",type:"callback"},eventafterrender:{name:"eventAfterRender",type:"callback"},eventafterallrender:{name:"eventAfterAllRender",type:"callback"},eventdestroy:{name:"eventDestroy",type:"callback"},editable:{name:"editable",type:"boolean"},eventstarteditable:{name:"eventStartEditable",type:"boolean"},eventdurationeditable:{name:"eventDurationEditable",type:"boolean"},dragrevertduration:{name:"dragRevertDuration",type:"integer"},dragopacity:{name:"dragOpacity",type:"float"},dragscroll:{name:"dragScroll",type:"boolean"},eventoverlap:{name:"eventOverlap",type:"boolean/function"},eventconstraint:{name:"eventConstraint",type:"object"},eventallow:{name:"eventAllow",type:"callback"},longpressdelay:{name:"longPressDelay",type:"integer"},eventlongpressdelay:{name:"eventLongPressDelay",type:"integer"},eventdragstart:{name:"eventDragStart",type:"callback"},eventdragstop:{name:"eventDragStop",type:"callback"},eventdrop:{name:"eventDrop",type:"callback"},eventresizestart:{name:"eventResizeStart",type:"callback"},eventresizestop:{name:"eventResizeStop",type:"callback"},eventresize:{name:"eventResize",type:"callback"},droppable:{name:"droppable",type:"boolean"},dropaccept:{name:"dropAccept",type:"function/string"},drop:{name:"drop",type:"callback"},eventreceive:{name:"eventReceive",type:"callback"}};n(function(){var t=n(".fc"),r,u;for(i=0;i