@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 2.42 kB
JavaScript
import{jsx as d,jsxs as E}from"react/jsx-runtime";import"./Sessions.scss";import F from"fuse.js";import{observer as S}from"mobx-react-lite";import{useMemo as x}from"react";import n,{uiState as i}from"../store";import{t as w}from"../utils/i18n";import{Schedule as b}from"./";import{ShortcutsToolbar as j}from"./Shortcuts";const I=S(({showFilters:f=!0})=>{const T=n.eventStore.eventItems,{filters:{date:{value:a},timeOfDay:{value:m},sortOrder:{value:k},showBookmarksOnly:{value:h},showLiveOnly:{value:p},selectedTracks:{value:v},selectedVenues:{value:D}}}=n.sessionsFilterStore.state,y=x(()=>{const o=new Date;o.setHours(0,0,0,0);const l=new Date(o);l.setDate(o.getDate()+1);let e=T;if(a!=="all"&&(e=e.filter(t=>{const s=new Date(t.startDate);if(s.setHours(0,0,0,0),a==="today")return s.getTime()===o.getTime();if(a==="tomorrow")return s.getTime()===l.getTime();if(a==="past"){const r=new Date;return new Date(t.endDate)<r}return!0})),m!=="all"&&a==="today"&&(e=e.filter(t=>{const r=new Date(t.startDate).getHours();switch(m){case"morning":return r>=6&&r<12;case"midday":return r>=12&&r<18;case"afternoon":return r>=18&&r<=23;default:return!0}})),i.selectedTrack&&(e=e.filter(t=>t.tracks.some(s=>s.id===i.selectedTrack.id))),h&&(e=e.filter(t=>t.bookmarked)),p){const t=new Date;e=e.filter(s=>{const r=new Date(s.startDate),u=new Date(s.endDate);return r<=t&&t<=u})}v.length>0&&(e=e.filter(t=>t.tracks.some(s=>v.includes(s.id)))),D.length>0&&(e=e.filter(t=>t.boothId&&D.includes(t.boothId)));const c=n.searchStore.searchText;if(c){const t={keys:["name"],threshold:.3,ignoreLocation:!0,includeScore:!0};e=new F(e,t).search(c).map(u=>u.item)}return e},[T,n.searchStore.searchText,a,m,i.selectedTrack,h,p,v,D,n.sessionsFilterStore.state]),g=x(()=>[...y].sort((o,l)=>{const e=new Date(o.startDate).getTime(),c=new Date(l.startDate).getTime();return k==="asc"?c-e:e-c}),[y,k]),O=o=>{n.selectEventItem(o,!0)};return E("div",{className:"efp-sessions-content",children:[f&&d(j,{interfaceId:"sessions"}),g.length>0?d(b,{events:g,showBooths:!0,isSessions:!0,onEventClick:O}):d("div",{className:"efp-sessions-empty",children:n.sessionsFilterStore.activeFiltersCount>0||n.searchStore.searchText||i.selectedTrack?h?w("No bookmarked events found. Try adjusting your filters."):w("No events found. Try adjusting your filters."):w("No events found")})]})}),N=S(f=>i.list.type!=="sessions"||i.details?null:d(I,{...f}));export default N;