/* * Organisation - Events page scripts. */ (function (win, doc, undef) { "use strict"; let oe = sax.OrgEvt = { data: {}, fn: {} }; let $pnl = oe.$pnl = {}, $frm = oe.$frm = {}, $dlg = oe.$dlg = {}; //-------------------------------------------------------------- oe.refreshResults = function (delay) { sax.data.userCanManageEvents = false; if (!sax.awaitingRefreshResponse) { $('.sax-burger', $pnl.filter).hide(); $('.sax-panel-item-list', $pnl.results).fadeOut(200).empty(); $('.sax-panel-messages', $pnl.results).hide().empty().append($('
' + sax.msg.dataQuerying + '
')).fadeIn(200); } sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'Organisation/Ajax/GetEventList', formId: 'frmEventFilter', callbackFn: oe.doRefreshResults }; sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50); sax.awaitingRefreshResponse = true; } oe.doRefreshResults = function (response) { //sax.debug('doRefreshResults', response); delete sax.awaitingRefreshResponse; sax.refreshControlValues(response.controlValues); var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty(); var $items = $('.sax-panel-item-list', $pnl.results).hide().empty(); if (!response.success) return; oe.data.organisation = response.organisation; // Reference data - Event types. if (response.eventTypes) sax.populateSelectCodeDesc('#cbEventType', response.eventTypes); // Menu. let $bgr = $('.sax-burger', $pnl.filter); let $mnu = $('ul.sax-dropdown-menu', $bgr).empty(); $mnu.append(oe.getFilterMenuOption(sax.lbl.refresh, function () { oe.refreshResults(); }, 'sax-refresh')); if (sax.data.userCanManageEvents = (response.user && response.user.canManage)) $mnu.append(oe.getFilterMenuOption(sax.lbl.add, function () { oe.createItem(); }, 'sax-edit')); $bgr.toggle(!!$('.sax-dropdown-item', $mnu).length); // Items. var items = response.events; if (!items.length) return $msgs.append($('
' + sax.msg.dataNoneFound + '
')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $items.append(oe.populateItem(oe.getItemTemplate(), items[itemIdx])); $items.fadeIn(50); } oe.populateItem = function ($item, item) { if (!item) return; $('.sax-panel-results .sax-panel-messages').hide().empty(); $('.EventType', $item).text(item.typeDesc); $('.EventDate', $item).text(item.eventDateFmt); $('.EventTime', $item).text(item.eventTimeFmt); $('.EventSummary', $item).text(item.summary); $('.EventDetails', $item).text(item.details); $('.EventSportCaption', $item).text(item.sportCaptionPrimary); $('.EventRegionCaption', $item).text(item.regionCaptionCountry); $('.EventCreatedOn', $item).text(item.createdOnFmt); $('.EventPublishedOn', $item).text(item.publishedOnFmt); $('.EventPublished', $item).toggle(!!item.publishedOnFmt); $('.EventExpiresOn', $item).text(item.expiresOnFmt); $('.EventExpires', $item).toggle(!!item.expiresOnFmt); $('.EventStatusDesc', $item).text(item.statusDesc).addClass('sax-status-' + item.statusCode.toLowerCase()); let $bgr = $('.sax-burger', $item); let $mnu = $('ul.sax-dropdown-menu', $bgr).empty(); if (!item.deleted) { if (sax.data.userCanManageEvents) { let fnUpd = function () { oe.updateItem(item, $item) }; $mnu.append(oe.getItemMenuOption(sax.lbl.edit, fnUpd, 'sax-edit')); $('.sax-caption .sax-action', $item).off('click').on('click', fnUpd); $item.off('dblclick').on('dblclick', fnUpd); } } else $('.sax-caption .sax-action', $item).removeClass('sax-action'); $bgr.toggle(!!$('.sax-dropdown-menu .sax-dropdown-item', $item).length); return $item; } //-------------------------------------------------------------- oe.getFilterDropdownTemplate = function () { return $('.sax-panel-item-template .sax-dropdown-menu.Events li.sax-dropdown-item', sax.$pnl.filter).clone(); } oe.getItemTemplate = function () { return $('.sax-panel-item-template .sax-panel-item.Event', sax.$pnl.results).clone(); } oe.getItemDropdownTemplate = function () { return $('.sax-panel-item-template .sax-dropdown-menu.Event li.sax-dropdown-item', sax.$pnl.results).clone(); } oe.getFilterMenuOption = function (lbl, fn, cls) { return oe.getMenuOption(oe.getFilterDropdownTemplate(), lbl, fn, cls); } oe.getItemMenuOption = function (lbl, fn, cls) { return oe.getMenuOption(oe.getItemDropdownTemplate(), lbl, fn, cls); } oe.getMenuOption = function ($opt, lbl, fn, cls) { return $opt.find('div.sax-label').text(lbl).end().on('click', fn).addClass(cls); } //-------------------------------------------------------------- oe.selectFilterOrganisation = function () { if (!sax.data.memberOrganisations) oe.getMemberOrganisations(oe.showSelectOrganisation); else oe.showSelectOrganisation(); } oe.getMemberOrganisations = function (fnCallback) { let handleMemberOrganisationsResponse = function (response) { //sax.debug('handleUserOrgsResponse', response); if (!response.success) return; sax.data.memberOrganisations = response.organisations; if (fnCallback) fnCallback(); } sax.ajax.userOrgs = sax.ajax.userOrgs || { url: sax.url.base + 'Organisation/Ajax/GetEventAdminOrganisationList', formId: 'frmNavigate', callbackFn: handleMemberOrganisationsResponse }; sax.doAjaxRequest(sax.ajax.userOrgs); } oe.showSelectOrganisation = function () { //sax.debug('selectFilterOrganisation'); sax.selectOrganisation.fn.selectOrganisation({ caption: sax.dlg.title.selectOrganisation, items: sax.data.memberOrganisations, fnCallback: oe.onOrganisationSelected }); } oe.onOrganisationSelected = function (id, name) { //sax.debug('onOrganisationSelected', id, name); $('#frmEventFilter #ifFilterOrganisationId, #frmEvent #ifEventOrganisationId').val(id); $('#frmEventFilter #ifFilterOrganisation').val(name); oe.refreshResults(50); } //-------------------------------------------------------------- oe.selectSportPrimary = function () { sax.mdl.selectSport.fn.selectSport({ caption: sax.dlg.title.selectSport, sportId: $('.EventSportIdPrimary', $frm.evt).val(), fnCallback: oe.onSelectSport }) } oe.onSelectSport = function (sport) { sax.clearControlError($('.EventSportIdPrimary', $frm.evt).val(sport.id)); $('.EventSportCaptionPrimary', $frm.evt).val(sport ? sport.name : ''); } //-------------------------------------------------------------- oe.selectRegionCountry = function () { sax.mdl.selectRegion.fn.selectRegion({ caption: sax.dlg.title.selectRegion, regionId: $('.EventRegionIdCountry', $frm.evt).val(), fnCallback: oe.onSelectRegion }) } oe.onSelectRegion = function (region) { sax.clearControlError($('.EventRegionIdCountry', $frm.evt).val(region.id)); $('.EventRegionCaptionCountry', $frm.evt).val(region ? region.name : ''); } //-------------------------------------------------------------- oe.createItem = function () { if (!sax.data.userCanManageEvents) return; oe.clearItem(); $('#cbEventType', $frm.evt).prepend($("