Untitled

 avatar
unknown
plain_text
2 years ago
8.4 kB
4
Indexable
import Image from 'next/image';
import { BiFootball } from 'react-icons/bi';
import {
  BsFillArrowLeftCircleFill,
  BsFillArrowRightCircleFill,
} from 'react-icons/bs';

export default function Events2({ eventData, matchData, totalGoal }) {
  const awayTeam = matchData?.participants.find(
    (team) => team?.meta?.location === 'away'
  )?.id;

  const homeTeam = matchData?.participants.find(
    (team) => team?.meta?.location === 'home'
  )?.id;
  console.log('matchData', matchData);
  let newArray = [];

  eventData?.data?.events.forEach((event) => {
    const formattedEvent = {
      participant_id: event.participant_id || '',
      minute: event.minute || '',
      name: event.type.name || '',
      code: event.type.code || '',
      player: event.player_name || '',
      related_player: event.related_player_name || '',
    };

    if (
      event.type.code === 'yellowcard' ||
      event.type.code === 'redcard' ||
      event.type.code === 'substitution' ||
      event.type.code === 'VAR_CARD' ||
      event.type.code === 'goal' ||
      event.type.code === 'owngoal' ||
      event.type.code === 'VAR'
    ) {
      newArray.push(formattedEvent);
    }
  });

  const renderEvent = (event, style) => {
    switch (event.code) {
      case 'yellowcard':
        return yellowCard(event, style);
      case 'redcard':
        return redCard(event, style);
      case 'substitution':
        return substitution(event, style);
      case 'VAR':
        return VAR(event, style);
      case 'VAR_CARD':
        return VAR_CARD(event, style);
      case 'goal':
        return goal(event, style);
      case 'owngoal':
        return ownGoal(event, style);
      default:
        return null;
    }
  };

  const substitution = (event) => {
    return (
      <>
        <div className="flex flex-col gap-1 p-1">
          <BsFillArrowRightCircleFill className="text-base text-green-500" />
          <BsFillArrowLeftCircleFill className="text-base text-red-500" />
        </div>
        <div className="font-normal text-base">
          <p>{event.player}</p>
          <p>{event.related_player}</p>
        </div>
      </>
    );
  };

  const yellowCard = (event, style) => {
    return (
      <>
        <div className="bg-yellow-400 w-4 h-8 rounded flex flex-col gap-1"></div>
        <div>
          <h2 className="text-base">{event.player}</h2>
          <p className={`${style} text-sm`}>Foul</p>
        </div>
      </>
    );
  };

  const redCard = (event, style) => {
    return (
      <>
        <div className="bg-red-600 w-4 h-8 rounded flex flex-col gap-1"></div>
        <h2 className="text-base">{event.player}</h2>
        <p className={`${style} text-sm`}>Foul</p>
      </>
    );
  };

  const goal = (event, style) => {
    return (
      <>
        <BiFootball className="text-2xl" />
        <div>
          <h2 className="text-base">{event.player}</h2>
          <p className={`${style} text-sm`}>Goal</p>
        </div>
      </>
    );
  };

  const ownGoal = (event) => {
    return (
      <>
        <BiFootball className="text-base" />
        <p className="font-normal">{event.player}</p>
      </>
    );
  };

  const VAR_CARD = (event) => {
    return (
      <>
        <Image
          src="/icons/var.png"
          alt="var-logo"
          height={0}
          width={0}
          sizes="100vw"
          className="w-6 rounded-md"
        />
        <div className="font-normal">
          <p>{event.player}</p>
          <p>Goal Confirm</p>
        </div>
      </>
    );
  };

  const VAR = (event) => {
    return (
      <>
        <Image
          src="/icons/var.png"
          alt="var-logo"
          height={0}
          width={0}
          sizes="100vw"
          className="w-6 rounded-md"
        />
        <div className="font-normal">
          <p>{event.player}</p>
          <p>Goal Confirm</p>
        </div>
      </>
    );
  };

  return (
    <div className="mt-10  ">
      <div>
        <div className="bg-[#1B2435] text-center my-2 py-2">
          <h2 className="white">1st Half</h2>
          <h2>{totalGoal}</h2>
        </div>
        {newArray
          .sort((a, b) => b.minute - a.minute)
          .map((event, index) => {
            if (event.minute > 45 + Number(matchData?.periods[0]?.time_added)) {
              return (
                <div
                  key={index}
                  className=" w-full mx-auto grid grid-cols-3 items-center gap-5 px-4 h-16 mt-3"
                >
                  <div>
                    {awayTeam === event.participant_id ? (
                      <div
                        className={`flex ${
                          awayTeam === event.participant_id
                            ? 'flex-row-reverse'
                            : ''
                        } items-center justify-start w-full gap-2 p-2 col-span-1`}
                      >
                        {renderEvent(event, 'text-end')}
                      </div>
                    ) : (
                      <div className="col-span-1"></div>
                    )}
                  </div>

                  <div className="text-center col-span-1 w-16 h-16 rounded-full bg-[#061A30] justify-self-center">
                    <h4 className="mt-5">
                      {event?.minute}
                      {`'`}
                    </h4>
                  </div>

                  <div>
                    {homeTeam === event.participant_id ? (
                      <div
                        className={`flex ${
                          homeTeam === event.participant_id ? 'flex-row' : ''
                        } items-center justify-start w-full gap-2 p-2 col-span-1`}
                      >
                        {renderEvent(event, 'text-start')}
                      </div>
                    ) : (
                      <div className="col-span-1"></div>
                    )}
                  </div>
                </div>
              );
            }
          })}
      </div>
      <div>
        <div className="bg-[#1B2435] text-center my-2 py-2">
          <h2 className="white">1st Half</h2>
          <h2>{totalGoal}</h2>
        </div>
        {newArray
          .sort((a, b) => b.minute - a.minute)
          .map((event, index) => {
            if (event.minute < 45 + Number(matchData?.periods[1]?.time_added)) {
              return (
                <div
                  key={index}
                  className=" w-full mx-auto grid grid-cols-3 items-center gap-5 px-4 h-16 mt-3"
                >
                  <div>
                    {awayTeam === event.participant_id ? (
                      <div
                        className={`flex ${
                          awayTeam === event.participant_id
                            ? 'flex-row-reverse'
                            : ''
                        } items-center justify-start w-full gap-2 p-2 col-span-1`}
                      >
                        {renderEvent(event, 'text-end')}
                      </div>
                    ) : (
                      <div className="col-span-1"></div>
                    )}
                  </div>

                  <div className="text-center col-span-1 w-16 h-16 rounded-full bg-[#061A30] justify-self-center">
                    <h4 className="mt-5">
                      {event?.minute}
                      {`'`}
                    </h4>
                  </div>

                  <div>
                    {homeTeam === event.participant_id ? (
                      <div
                        className={`flex ${
                          homeTeam === event.participant_id ? 'flex-row' : ''
                        } items-center justify-start w-full gap-2 p-2 col-span-1`}
                      >
                        {renderEvent(event, 'text-start')}
                      </div>
                    ) : (
                      <div className="col-span-1"></div>
                    )}
                  </div>
                </div>
              );
            }
          })}
      </div>
    </div>
  );
}
Editor is loading...
Leave a Comment