Exception Raised when Canvas meet GraffitiSuite WebCalendar

The situation is:

I have a webpage as the main page with a GraffitiSuite WebCalendar in the middle, and some image buttons and a WebCanvas used to show a notification badge. if both controls exist together, exception raised in built webapp (not in debug mode). The exception doesn’t raise if either one appears in the page. Please help.

here is the content of the exception:

Could not execute returned javascript: Cannot read property ‘refresh’ of undefined
Source: window.GSjQuery(’#yqdekJ08 .fc-sun’).addClass(‘StyleTextColorRed’);
window.GSjQuery(’#yqdekJ08 .fc-toolbar’).addClass(‘StyleCalendar’);
window.GSjQuery(’#yqdekJ08 .fc-toolbar button’).addClass(‘StyleCalendar2’);
window.GSjQuery(‘head’).append(’<link rel=\‘stylesheet\’ id=\‘gwcal_yqdekJ08_theme\’ href=\’\’>’ );suppLang = [];window.GSjQuery.each(window.GSjQuery.fullCalendar.locales, function(langCode) {suppLang.push(langCode);});Xojo.triggerServerEvent(‘yqdekJ08’,‘LanguagesLoaded’, suppLang);window.GSjQuery(’#yqdekJ08’).fullCalendar({header: {left: ‘prevYear,nextYear’,center: ‘prev title next’,right: ‘month,agendaWeek,agendaDay’},theme: false,locale: ‘zh-tw’,defaultDate: ‘2017-06-29’,defaultView: ‘month’,editable: true,eventLimit: true,eventLimitClick: ‘popover’,eventLimitText: ‘more’,height: ‘100%’,selectable: true,selectionHelper: true,viewRender: function( view, element ) {Xojo.triggerServerEvent(‘yqdekJ08’,‘ViewChanged’, [view.name,view.start.get(‘year’),view.start.get(‘month’) + 1,view.start.get(‘date’), view.start.get(‘hour’),view.start.get(‘minute’),view.start.get(‘second’),view.end.get(‘year’),view.end.get(‘month’) + 1,view.end.get(‘date’), view.end.get(‘hour’),view.end.get(‘minute’),view.end.get(‘second’),view.start.hasTime(),view.end.hasTime()]);},select: function (start, end, jsEvent, view) {if( typeof(jsEvent) != ‘undefined’ ) {Xojo.triggerServerEvent(‘yqdekJ08’,‘Selected’, [‘month’,start.get(‘year’),start.get(‘month’) + 1,start.get(‘date’), start.get(‘hour’),start.get(‘minute’),start.get(‘second’),end.get(‘year’),end.get(‘month’) + 1,end.get(‘date’), end.get(‘hour’),end.get(‘minute’),end.get(‘second’),start.hasTime(),end.hasTime()]);}},googleCalendarError: function(e) {Xojo.triggerServerEvent(‘yqdekJ08’, ‘googleCalendarError’, [e.domain,e.reason,e.message]);},eventDragStart: function(event,jsevent,ui,view) {},eventDragStop: function(event,jsevent,ui,view) {},eventClick: function(data,jsEvent,view) {window.graffwebcalyqdekJ08clickevent = data;if( typeof(data.url) !== ‘undefined’) {window.open(data.url, ‘gcalevent’, ‘width=700,height=600’);return false;} else {Xojo.triggerServerEvent(‘yqdekJ08’,‘EventClick’, [data.id,data.title]);}},eventMouseover: function( data, jsEvent, view ) {Xojo.triggerServerEvent(‘yqdekJ08’,‘EventHover’, [data.id,data.title,jsEvent.pageX,jsEvent.pageY]);},eventDrop: function( event, delta, revertFunc, jsEvent, ui, view ) {Xojo.triggerServerEvent(‘yqdekJ08’,‘EventDrop’, [event.id,event.start.get(‘year’),event.start.get(‘month’) + 1,event.start.get(‘date’), event.start.get(‘hour’),event.start.get(‘minute’),event.start.get(‘second’),event.end.get(‘year’),event.end.get(‘month’) + 1,event.end.get(‘date’), event.end.get(‘hour’),event.end.get(‘minute’),event.end.get(‘second’),event.start.hasTime()]);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘rerenderEvents’);},eventResize: function( event, delta, revertFunc, jsEvent, ui, view ) {Xojo.triggerServerEvent(‘yqdekJ08’,‘EventResize’, [event.id,event.start.get(‘year’),event.start.get(‘month’) + 1,event.start.get(‘date’), event.start.get(‘hour’),event.start.get(‘minute’),event.start.get(‘second’),event.end.get(‘year’),event.end.get(‘month’) + 1,event.end.get(‘date’), event.end.get(‘hour’),event.end.get(‘minute’),event.end.get(‘second’),event.start.hasTime()]);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘rerenderEvents’);},eventMouseout: function( data, jsEvent, view ) {Xojo.triggerServerEvent(‘yqdekJ08’,‘EventMouseOut’, [data.id,data.title]);},});
myInner = window.GSjQuery(’#yqdekJ08’);if( typeof(myInner) != ‘undefined’ ) {if( typeof(myInner.fullCalendar) == ‘function’ ) {parentPx = myInner.getDefaultPx(2);var toolbar = window.GSjQuery(’#yqdekJ08 .fc-toolbar’);if( typeof(toolbar) != ‘undefined’ ) {var toolHeight = toolbar.height();var fullHeight = (myInner.height() - toolHeight);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘option’, ‘contentHeight’, fullHeight - 5);}}}myInner = window.GSjQuery(’#yqdekJ08’);if( typeof(myInner) != ‘undefined’ ) {if( typeof(myInner.fullCalendar) == ‘function’ ) {parentPx = myInner.getDefaultPx(2);var toolbar = window.GSjQuery(’#yqdekJ08 .fc-toolbar’);if( typeof(toolbar) != ‘undefined’ ) {var toolHeight = toolbar.height();var fullHeight = (myInner.height() - toolHeight);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘option’, ‘contentHeight’, fullHeight - 5);}}}myInner = window.GSjQuery(’#yqdekJ08’);if( typeof(myInner) != ‘undefined’ ) {if( typeof(myInner.fullCalendar) == ‘function’ ) {parentPx = myInner.getDefaultPx(2);var toolbar = window.GSjQuery(’#yqdekJ08 .fc-toolbar’);if( typeof(toolbar) != ‘undefined’ ) {var toolHeight = toolbar.height();var fullHeight = (myInner.height() - toolHeight);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘option’, ‘contentHeight’, fullHeight - 5);}}}window.GSjQuery(’#yqdekJ08’).css(‘visibility’,‘visible’).css(‘display’,‘block’);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘changeView’,‘month’);myInner = window.GSjQuery(’#yqdekJ08’);if( typeof(myInner) != ‘undefined’ ) {if( typeof(myInner.fullCalendar) == ‘function’ ) {parentPx = myInner.getDefaultPx(2);var toolbar = window.GSjQuery(’#yqdekJ08 .fc-toolbar’);if( typeof(toolbar) != ‘undefined’ ) {var toolHeight = toolbar.height();var fullHeight = (myInner.height() - toolHeight);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘option’, ‘contentHeight’, fullHeight - 5);}}}myInner = window.GSjQuery(’#yqdekJ08’);if( typeof(myInner) != ‘undefined’ ) {if( typeof(myInner.fullCalendar) == ‘function’ ) {parentPx = myInner.getDefaultPx(2);var toolbar = window.GSjQuery(’#yqdekJ08 .fc-toolbar’);if( typeof(toolbar) != ‘undefined’ ) {var toolHeight = toolbar.height();var fullHeight = (myInner.height() - toolHeight);window.GSjQuery(’#yqdekJ08’).fullCalendar(‘option’, ‘contentHeight’, fullHeight - 5);}}}window.GSjQuery(’#yqdekJ08’).fullCalendar(‘removeEvents’);
Xojo.controls[‘uSXQI9Zd’].refresh();

A sample project with just these two controls which shows the error would be much more helpful.

Or, you know, contact the developer. :stuck_out_tongue:

I can’t tell the cause from this, or what version of GraffitiSuite you’re running. If you’ll create a ticket at https://graffitisuite.com/support/tracker/ with an example, I’d be happy to help you with this.