// REQ0042/event-detail // // PURPOSE: // - Provides functionality view event detail // // RULES: // - T.B.A. // import React, { useEffect, useState } from 'react'; import { IonHeader, IonToolbar, IonContent, IonPage, IonButtons, IonMenuButton, IonButton, IonIcon, IonDatetime, IonSelectOption, IonList, IonItem, IonLabel, IonSelect, IonPopover, IonText, IonFooter, useIonRouter, IonAvatar, } from '@ionic/react'; import './style.scss'; import { accessibility, accessibilityOutline, chevronBackOutline, ellipsisHorizontal, ellipsisVertical, heart, locationOutline, locationSharp, logoIonic, man, manOutline, people, peopleOutline, timer, timerOutline, timerSharp, wallet, walletOutline, walletSharp, woman, womanOutline, } from 'ionicons/icons'; import AboutPopover from '../../components/AboutPopover'; import { format, parseISO } from 'date-fns'; import { TestContent } from './TestContent'; import { Helloworld } from '../../api/Helloworld'; import { getEventById } from '../../api/getEventById'; import { connect } from '../../data/connect'; import * as selectors from '../../data/selectors'; import { Event } from '../../models/Event'; import { RouteComponentProps } from 'react-router'; import AvatarRow from './AvatarRow'; const leftShift: number = -25; interface OwnProps extends RouteComponentProps { event_detail?: Event; } interface StateProps {} interface DispatchProps {} interface PageProps extends OwnProps, StateProps, DispatchProps {} const showJoinedMembers = (joinMembers: Record[]) => { const avatars = joinMembers.map((jm) => jm.avatar); console.log({ joinMembers }); return ( <> More ); }; const EventDetail: React.FC = ({ event_detail }) => { const router = useIonRouter(); const [showPopover, setShowPopover] = useState(false); const [popoverEvent, setPopoverEvent] = useState(); const [location, setLocation] = useState<'madison' | 'austin' | 'chicago' | 'seattle'>('madison'); const [conferenceDate, setConferenceDate] = useState('2047-05-17T00:00:00-05:00'); const [totalJoinMembers, setTotalJoinMembers] = useState(0); const [maleMembers, setMaleMembers] = useState(0); const [femaleMembers, setFemaleMembers] = useState(0); const selectOptions = { header: 'Select a Location', }; const presentPopover = (e: React.MouseEvent) => { setPopoverEvent(e.nativeEvent); setShowPopover(true); }; function displayDate(date: string, dateFormat: string) { return format(parseISO(date), dateFormat); } useEffect(() => { if (event_detail) { setTotalJoinMembers(event_detail.joinMembers.length); setMaleMembers(event_detail.joinMembers.filter((m) => m.sex == 'M').length); setFemaleMembers(event_detail.joinMembers.filter((m) => m.sex == 'F').length); } }, [event_detail]); const [eventDetail, setEventDetail] = useState(null); useEffect(() => { Helloworld(); getEventById('1').then(({ data }) => { console.log({ data }); setEventDetail(data); }); }, []); function handleBackOnClick() { router.goBack(); } if (!event_detail) return <>loading; return ( {/* */} handleBackOnClick()}>
{format(new Date(event_detail.eventDate), 'EEE, dd MMM yyyy, hh:mm a')}
{event_detail.title}
{event_detail.joinMembers && event_detail.joinMembers.length > 0 ? ( showJoinedMembers(event_detail.joinMembers) ) : ( <>join fast ! )}
{event_detail.currency}
{event_detail.price}
per person
{event_detail.duration_m}
mins
{event_detail.ageBottom}
~
{event_detail.ageTop}
years old
{event_detail.location}
{totalJoinMembers}
{maleMembers}
{femaleMembers}
Join
setShowPopover(false)} > setShowPopover(false)} />
); }; export default connect({ mapStateToProps: (state, ownProps) => { console.log({ t1: selectors.getEvents(state) }); return { event_detail: selectors.getEvent(state, ownProps), }; }, component: EventDetail, });