PageSourceSearch

https://moveoss.nl/content/themes/movenl/assets/js/calendar-B5QqEaND.js

js moveoss.nl collected 2026-10-01 23:54:54 UTC 4,874 bytes, 33 lines download raw bytes

1import { p as profile } from './profile-b4k2y0dV.js';
2import { r as reformat } from './reformat-CJwysHiu.js';
3import { f as datetime } from './main-module-Dg7u5i1g.js';
4
5const calendarCard=(session,classes='')=>{var _session$available_sp;// Required fields check
6if(!(session!==null&&session!==void 0&&session.id)||!(session!==null&&session!==void 0&&session.activity_id)||!(session!==null&&session!==void 0&&session.activity_name)||!(session!==null&&session!==void 0&&session.start_date)||!(session!==null&&session!==void 0&&session.organization_id)||!(session!==null&&session!==void 0&&session.organization_name)){return '';}const item={id:reformat.escape(session.id),activity_id:session.activity_id,activity_name:reformat.escape(session.activity_name||'Activiteit'),organization_id:session.organization_id,organization_name:reformat.escape(session.organization_name||''),startTime:datetime.getDateTime(session.start_date,'HH:mm'),duration:session.end_date?datetime.getDuration(session.start_date,session.end_date,true):false,spots:(_session$available_sp=session.available_spots)!==null&&_session$available_sp!==void 0?_session$available_sp:null};return `
7    <a
8      class="c-calendar-card ${classes}"
9      href="/organisatie/${item.organization_id}-${reformat.stringToSlug(item.organization_name)}/activiteit/${item.activity_id}-${reformat.stringToSlug(item.activity_name)}?moment=${item.id}"
10      title="${item.activity_name}"
11    >
12      <div class="c-calendar-card__left">
13        <p>${item.startTime}</p>
14        ${item.duration?`<p>${item.duration}</p>`:""}
15      </div>
16      <div class="c-calendar-card__right">
17        <p>${item.activity_name}</p>
18        ${item.spots?`<p>${item.spots>0?`${item.spots} plekken`:'Vol'}</p>`:""}
19      </div>
20    </a>
21  `;};
22
23class calendarClass{constructor(){this.elements={items:document.querySelector('.js-calendar .js-calendar-items'),noResults:document.querySelector('.js-calendar .js-no-results')};this.currentPage=1;this.itemsPerPage=15;this.isLoading=false;}async init(){const items=await this.loadData();if(!items||!items.length){this.showNoResults();return;}this.displaySchedule(items);this.observeScroll(()=>this.loadMore());}async loadData(){return await this.getData(this.currentPage);}async loadMore(){if(this.isLoading)return;this.isLoading=true;this.currentPage++;const result=await this.getData(this.currentPage);if(!result||result.status&&result.status!==200){console.error('Error loading sessions',result);this.isLoading=false;return false;}if(!result.length){this.isLoading=false;return;}this.displaySchedule(result);this.isLoading=false;}async getData(page){var _result$sessions;let result=await profile.getSessions({date_from:datetime.toISOString(datetime.getToday()),'sortBy[]':'start_date','sortDesc[]':false,itemsPerPage:this.itemsPerPage,page:page});if(result.status&&result.status!==200){console.error('Error loading sessions',result);return [];}return (_result$sessions=result.sessions)===null||_result$sessions===void 0?void 0:_result$sessions.map(item=>{var _item$sports;return {id:item.id,activity_id:item.activity_id,activity_name:item.activity_name,organization_id:item.organization_id,organization_name:item.organization_name,start_date:item.start_date,end_date:item.end_date,sports:(_item$sports=item.sports)!==null&&_item$sports!==void 0?_item$sports:[]};});}observeScroll(callback){window.addEventListener('scroll',()=>{if(window.scrollY+window.innerHeight>=document.documentElement.scrollHeight-50){callback();}});}displaySchedule(items){if(!items||!items.length){this.showNoResults();return;}const itemsByDay={};items.forEach(item=>{const date=datetime.getDate(item.start_date,'YYYY-MM-DD');if(!itemsByDay[date])itemsByDay[date]=[];itemsByDay[date].push(item);});Object.entries(itemsByDay).forEach(([date,itemsArray])=>{const dayName=datetime.getDayName(date);const dayCount=datetime.getDay(date);const monthName=datetime.getMonthName(date);const dateString=datetime.getDate(date);let container=this.elements.items.querySelector(`.js-day-${dateString}`);if(!container){this.elements.items.insertAdjacentHTML('beforeend',`
24          <div class="flex items-center">
25            <h2 class="font-light w-fit py-0 pr-[20px] m-0 min-w-[250px] text-base">
26              ${dayName} ${dayCount} ${monthName}
27            </h2>
28            <hr class="h-[2px] bg-gray-300 w-full">
29          </div>
30          <div class="js-day-${dateString} flex flex-wrap gap-y-[15px] gap-x-[20px] my-[45px] mx-0"></div>
31        `);container=this.elements.items.querySelector(`.js-day-${dateString}`);}itemsArray.forEach(item=>{const html=calendarCard(item);if(html){container.insertAdjacentHTML('beforeend',html);}});});}showNoResults(){if(this.elements.noResults){this.elements.noResults.style.display='flex';}}}const calendar=new calendarClass();
31(async function(){calendar.init();})();
32
33export { calendarClass };

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.