Skip to content

Commit be49adb

Browse files
monoMonuthulieblackAceTheCreatorasyncapi-bot
authored
feat: handle past events (#289)
* feat: Handle past events * Update venue.js remove explicit export from Venue/venue.js * remove "upcoming" tag * fix event text visibility issue * resolve conflict --------- Co-authored-by: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com> Co-authored-by: Ace <40604284+AceTheCreator@users.noreply.github.com> Co-authored-by: asyncapi-bot <bot+chan@asyncapi.io>
1 parent 5e8b0a1 commit be49adb

File tree

2 files changed

+33
-15
lines changed

2 files changed

+33
-15
lines changed

components/Venue/venue.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,42 @@ import React from 'react';
33
import Link from 'next/link';
44
import Image from 'next/image';
55

6+
export function isEventEnded(date){
7+
const eventDate = date.split(" ");
8+
const month = eventDate[0];
9+
const year = eventDate[eventDate.length-1];
10+
const startDay = eventDate[1].split("-")[0];
11+
return new Date(`${startDay} ${month} ${year}`) < Date.now()
12+
}
13+
14+
615
function Venue({ className, city }) {
16+
17+
const eventEnded = isEventEnded(city.date);
18+
const textColor = eventEnded ? "text-white": "text-white";
19+
720
return (
821
<Link href={`/venue/${city.name}`}>
9-
<div style={{'--image-url': `url(${city.img})`}}
22+
<div style={{background: `linear-gradient(to bottom, rgba(0,0,0,.3), rgba(0,0,0, .3)), url(${city.img})`, backgroundSize: "cover"}}
1023
className='relative w-[300px] h-[400px] sm:w-[250px] sm:h-[350px] card-bg rounded-md bg-[image:var(--image-url)] flex items-center justify-center p-4 cursor-pointer m-2'>
1124
<div className='flex justify-between flex-col w-full h-full'>
1225
<div className='flex items-center'>
13-
{city.cfp? <div className='border text-white text-md rounded-lg p-1 text-center mt-2'>cfp is open</div> :null}
26+
{city.cfp? <div className={`border ${textColor} text-md rounded-lg p-1 text-center mt-2`}>cfp is open</div> :null}
1427
<button onClick={(e) => {
1528
e.preventDefault()
1629
window.open(city.map, '_blank', 'noopener')
1730
}} className='w-8 h-8 bg-white rounded-xl flex items-center justify-center ml-auto'>
1831
<Image src='/img/mapIcon.svg' alt='Map Icon' width={24} height={24} />
1932
</button>
20-
<div></div>
2133
</div>
2234
<div></div>
23-
<div className='text-white'>
35+
<div className={textColor}>
2436
<div>
2537
{city.name=='Online'?<span className='text-lg font-bold'>{city.name} {city.country}</span>:<span className='text-lg font-bold'>{city.country}, {city.name}</span>}
2638
</div>
27-
<div className='flex items-center justify-between w-full'>
28-
<div className='border border-gray-400 rounded-lg p-1 text-center mt-2'>{city.date}</div>
39+
<div className='flex align-end flex-row justify-between pt-2'>
40+
<div className='inline-block border border-gray-400 rounded-lg py-1 px-2 text-center'>{city.date}</div>
41+
<span className=' text-white flex align-middle pt-2' style={{ fontSize: ".9em" }}>{eventEnded ? "ENDED" : ""}</span>
2942
</div>
3043
</div>
3144
</div>

pages/venue/[id].js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Heading from '../../components/Typography/heading';
66
import Paragraph from '../../components/Typography/paragraph';
77
import speakers from '../../config/speakers.json';
88
import Sponsors from '../../components/Sponsors/sponsors';
9+
import { isEventEnded } from '../../components/Venue/venue';
910
import Agenda from '../../components/Agenda/agenda';
1011
import Guidelines from '../../components/Speaker/guideline';
1112
import CFPdata from "../../config/cfp-data.json"
@@ -34,33 +35,37 @@ export async function getStaticPaths() {
3435
}
3536

3637
function Venue({ city }) {
38+
39+
const eventEnded = isEventEnded(city.date);
40+
const textColor = eventEnded ? "text-gray-400": "text-white";
41+
3742
return (
3843
<div>
3944
<div className= {`w-full h-[500px] sm:h-[auto] ${city.name=='Online'?'bg-online':'bg-madrid'} bg-cover bg-center`}>
4045
<div className='w-full h-full kinda-dark items-center flex flex-col justify-between'>
4146
<div className='mt-[60px] container text-center flex flex-col items-center w-[1100px] lg:w-full sm:text-center'>
42-
{city.name=='Online'?<Heading className='text-white'>
47+
{city.name == 'Online' ? <Heading className={textColor}>
4348
{city.name} {city.country}
44-
</Heading>:
45-
<Heading className='text-white'>
46-
{city.name}, {city.country}
47-
</Heading>}
49+
</Heading> :
50+
<Heading className={textColor}>
51+
{city.name}, {city.country}
52+
</Heading>}
4853

49-
<Paragraph className='mt-[24px]' textColor='text-white'>{city.description}</Paragraph>
54+
<Paragraph className='mt-[24px]' textColor={textColor}>{city.description}</Paragraph>
5055

51-
<Heading typeStyle='lg' className='text-white mt-[24px] hover:underline'>
56+
<Heading typeStyle='lg' className={`${textColor} mt-[24px] hover:underline`}>
5257
<a href={city.map} target='_blank' rel="noreferrer">
5358
{city.address}
5459
</a>
5560
</Heading>
56-
<Heading typeStyle='lg' className='text-white mt-[24px]'>
61+
<Heading typeStyle='lg' className={`${textColor} mt-[24px]`}>
5762
{city.date}
5863
</Heading>
5964
{city.ended ? (city.playlist && <a href='#recordings'><Button className="w-[250px] h-[50px] m-8">Watch Recordings</Button></a>): <div className='m-[30px]'>
6065
{city.ticket && <a href={city.ticket} target='_blank' rel='noreferrer'>
6166
<Button className="px-8 m-2 w-[250px]">{city.isFree ? "Get Your Ticket" : "Register Now"}</Button>
6267
</a>}
63-
{city.cfp && <a href={city.name === 'online'? "/venue/online/register" :city.cfp}target={city.name=='Online'?"":'_blank'} rel='noreferrer'>
68+
{(!eventEnded && city.cfp) && <a href={city.name === 'online'? "/venue/online/register" :city.cfp}target={city.name=='Online'?"":'_blank'} rel='noreferrer'>
6469
<Button className="px-8 m-2 w-[250px]">Apply to be a speaker</Button>
6570
</a>}
6671
</div>}

0 commit comments

Comments
 (0)