async function handleSwitchCalendarDate(date) { const displayDate = date.getFullYear(); if(displayDate === this.displayDate) return; this.displayDate = displayDate; toggleLoading('#mainContent', true); try { const data = await $.getJSON(this.props.ajaxGetEffortsUrl.replace('{year}', displayDate)); const events = data.map(effort => ({id: effort.id, start: effort.start, end: effort.end, title: effort.title, allDay: true, effort: effort})); this.modifyEvents(events); } catch { zui.Messager.fail(this.props.textNetworkError); } toggleLoading('#mainContent', false); } function renderEvent(event) { const effort = event.effort; return { icon : null, hint : effort.divTitle || effort.title, url : effort.url, text : {html: effort.title, className: 'flex items-center gap-1'}, trailing : zui.jsx`