fix venue filtering bug, hide venues with no upcoming events, show message if no upcoming events

This commit is contained in:
2024-08-18 02:09:34 +02:00
parent 2830e0a2e8
commit 852882d392
3 changed files with 25 additions and 13 deletions

View File

@ -82,18 +82,19 @@ export const EventContainer = ({
Filtering on a venue with no upcoming events will work, Filtering on a venue with no upcoming events will work,
and in that case it's included in the dropdown and in that case it's included in the dropdown
*/ */
const venueSlugsWithUpcomingEvents = events const venueSlugsWithUpcomingEvents = unique(
events
.map((x) => x.occurrences) .map((x) => x.occurrences)
.flat() .flat()
.filter((x) => x.venue?.__typename === "VenuePage") .filter((x) => x.venue?.__typename === "VenuePage")
.map((x) => x.venue?.slug) .map((x) => x.venue?.slug)
.filter((x) => typeof x === "string"); .filter((x) => typeof x === "string")
);
const filterableVenues = venues const filterableVenues = venues
.map((x) => .filter(
venues.find( (x) => venueSlugsWithUpcomingEvents.includes(x.slug) || x.slug === venue
(haystack) => haystack.slug === x.slug || haystack.slug === venue
)
) )
.map((x) => venues.find((haystack) => haystack.slug === x.slug))
.filter((x) => x !== undefined) as VenueFragment[]; .filter((x) => x !== undefined) as VenueFragment[];
const filteredEvents = events const filteredEvents = events
@ -186,6 +187,11 @@ export const EventContainer = ({
}; };
const EventList = ({ events }: { events: EventFragment[] }) => { const EventList = ({ events }: { events: EventFragment[] }) => {
if (events.length === 0) {
return (
<div className={styles.noEvents}>Ingen kommende arrangementer.</div>
);
}
return ( return (
<ul className={styles.eventList}> <ul className={styles.eventList}>
{events.map((event) => ( {events.map((event) => (

View File

@ -123,11 +123,13 @@ export const EventFilterExplained = ({
let text = ""; let text = "";
if (category && organizer && venue) { if (category && organizer && venue) {
text = `${category.name} arrangert av ${organizer.name} ${venue.preposition} ${venue.title}`; text = `${category.name} av ${organizer.name} ${venue.preposition} ${venue.title}`;
} else if (category && organizer) { } else if (category && organizer) {
text = `${category.name} arrangert av ${organizer.name}`; text = `${category.name} av ${organizer.name}`;
} else if (category && venue) {
text = `${category.name} ${venue.preposition} ${venue.title}`;
} else if (category) { } else if (category) {
text = `Kategori: ${category.name}`; text = `${category.name}`;
} else if (organizer && venue) { } else if (organizer && venue) {
text = `Arrangeres av ${organizer.name} ${venue.preposition} ${venue.title}`; text = `Arrangeres av ${organizer.name} ${venue.preposition} ${venue.title}`;
} else if (organizer) { } else if (organizer) {

View File

@ -2,6 +2,10 @@
//margin: calc(var(--spacing-sitepadding-block)*-1) calc(var(--spacing-sitepadding-inline)*-1); //margin: calc(var(--spacing-sitepadding-block)*-1) calc(var(--spacing-sitepadding-inline)*-1);
} }
.noEvents {
padding-bottom: var(--spacing-sitepadding-block);
}
.eventList { .eventList {
padding: var(--spacing-sitepadding-block) 0; padding: var(--spacing-sitepadding-block) 0;
display: grid; display: grid;