IPA-Kredse i Danmark
let piecalAJAX = { ajaxURL: "https://ipa-dk.dk/ipa-dk/wp-admin/admin-ajax.php", ajaxNonce: "816cd601ce" } let alreadyExpandedOccurrences = []; function piecalPrepareCustomViewsForCalendar( views ) { let supportedEventHandlers = [ 'eventDataTransform', 'dateClick', 'eventClick', 'eventDidMount', 'dayCellDidMount', 'viewDidMount', 'viewWillUnmount', 'dayHeaderContent', 'dayHeaderDidMount' ]; for( let view in views ) { let viewProps = views[view]; for( let prop in viewProps ) { if( supportedEventHandlers.includes( prop ) ) { let eventHandlerCode = viewProps[prop]; let handlerFunction = new Function( 'info', eventHandlerCode ); viewProps[prop] = handlerFunction; } } // Remove customProps since we don't want those output inside the calendar object delete viewProps.customProps; // Add in the $atts['duration'] value if the view has a duration property. if( viewProps.duration ) { viewProps.duration = { months: 2 }; } } return views; } document.addEventListener('DOMContentLoaded', function() { var pieCalendarFirstLoad = true; var calendarEl = document.getElementById('calendar'); var calendar = new FullCalendar.Calendar(calendarEl, { headerToolbar: false, initialView: "dayGridMonth", editable: false, eventSources: [[{"title":"Sort Sol – Midt og Vestsjælland","start":"2025-10-09T12:00:00","end":"2025-10-12T12:00:00","details":"Midt og Vestsj\u00e6lland \nSORT SOL 9-12 okt 2025 og meget mere omkring Syd og S\u00f8nderjylland, vi k\u00f8rer med BUS. \/ F\u00c5 PLADSER\nKontakt XXX for yderligere information.","permalink":"https:\/\/ipa-dk.dk\/ipa-dk\/sort-sol-2\/","postType":"Page","postId":6164,"allDay":"1"}]], direction: "ltr", contentHeight: "auto", locale: "en-US", eventTimeFormat: {"hour":"2-digit","minute":"2-digit"}, dayHeaderFormat: { weekday: 'long' }, views: piecalPrepareCustomViewsForCalendar({"listUpcoming":{"type":"listMonth","duration":{"months":2},"customProps":{"niceName":"List - Upcoming"}}}), eventClick: function( info ) { info = piecalJS.eventClick( info, { appendOffset: false } ); }, eventDataTransform: function(event) { event = piecalJS.eventDataTransform( event ); return event; }, dateClick: function( info ) { info = piecalJS.dateClick( info ); }, eventDidMount: function( info ) { info = piecalJS.eventDidMount( info ); }, dayCellDidMount: function( info ) { info = piecalJS.dayCellDidMount( info ); }, dayHeaderContent: function( info ) { info = piecalJS.dayHeaderContent( info ); return info.text; }, dayHeaderDidMount: function( info ) { let defaultOptions = { showDates: true, locale: "en-US" }; info = piecalJS.dayHeaderDidMount( info, defaultOptions ); }, }); calendar.render(); window.calendar = calendar; }); function piecalChangeView( view ) { piecalCleanView( document.querySelector('.piecal-wrapper').getAttribute('data-view'), view ); document.querySelector('.piecal-wrapper').setAttribute('data-view', view); window.calendar.changeView(view); Alpine.store('calendarEngine').calendarView = view; Alpine.store('calendarEngine').viewTitle = window.calendar.currentData.viewTitle; Alpine.store('calendarEngine').viewSpec = window.calendar.currentData.viewSpec.buttonTextDefault; } // This function forces the calendar to re-render events when the view is changed, but only // when necessary. This prevents artifacts from custom views from persisting between view changes // when those views have the same or similar types, e.g. listMonth and listUpcoming. function piecalCleanView( oldView, newView ) { if( oldView.toLowerCase().includes( 'list' ) && newView.toLowerCase().includes( 'grid' ) ) { return false; } if( oldView.toLowerCase().includes( 'list' ) && newView.toLowerCase().includes( 'list' ) ) { window.calendar.changeView('dayGridMonth'); } if( oldView.toLowerCase().includes( 'grid' ) && newView.toLowerCase().includes( 'grid' ) ) { window.calendar.changeView('listMonth'); } } function piecalGotoToday() { console.log('today'); } function piecalNextInView() { window.calendar.next(); } function piecalPreviousInView() { console.log('prev'); } function piecalSkipCalendar() { let focusedCalendar = document.querySelector('.piecal-wrapper:focus-within'); let focusablesInCalendar = focusedCalendar.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"]'); let lastFocusable = focusablesInCalendar[focusablesInCalendar.length - 1]; let focusablesInDocument = document.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"]'); let targetFocusable = Array.prototype.indexOf.call(focusablesInDocument, lastFocusable) + 1; focusablesInDocument[targetFocusable].focus(); } document.addEventListener('alpine:init', () => { Alpine.store('calendarEngine', { viewTitle: "Loading", viewSpec: "Loading", buttonText: {}, showPopover: false, locale: "en-US", localeDateStringFormat: {"hour":"2-digit","minute":"2-digit"}, allDayLocaleDateStringFormat: [], calendarView: "dayGridMonth", eventTitle: "Loading...", eventDetails: "Loading...", eventType: "Loading...", eventStart: "Loading...", eventAllDay: false, eventActualEnd: null, eventEnd: "Loading...", eventUrl: "/", safeOutput( input ) { let scrubber = document.createElement('textarea'); scrubber.innerHTML = input; return scrubber.value; } }) }) window.addEventListener('DOMContentLoaded', () => { Alpine.store('calendarEngine').viewTitle = window.calendar.currentData.viewTitle; Alpine.store('calendarEngine').viewSpec = window.calendar.currentData.viewSpec.buttonTextDefault; Alpine.store('calendarEngine').buttonText = window.calendar.currentData.localeDefaults.buttonText; }) window.addEventListener('keydown', (e) => { if( e.keyCode == 27 || e.key == 'Escape' ) Alpine.store('calendarEngine').showPopover = false; })
Her ses alle de events som der udbydes i de forskellige kredse.
I kan trykke på de forskellige events og se status for tilmelding mv.
Klik på den enkelte kreds i menuen og se aktiviteter, beskrivelser af kredsene, bestyrelser og kontaktinformationer
