diff --git a/frontend2/src/components/compete/ScrimmagingRecord.tsx b/frontend2/src/components/compete/ScrimmagingRecord.tsx index 00a3122c2..b620fcef6 100644 --- a/frontend2/src/components/compete/ScrimmagingRecord.tsx +++ b/frontend2/src/components/compete/ScrimmagingRecord.tsx @@ -6,7 +6,6 @@ import { import { useScrimmagingRecord } from "api/compete/useCompete"; import { useEpisodeId } from "contexts/EpisodeContext"; import WinLossTie from "./WinLossTie"; -import Spinner from "components/Spinner"; interface ScrimmagingRecordProps { team: Pick; @@ -57,11 +56,11 @@ const ScrimmagingRecord: React.FC = ({
{team.name}
)} - {!scrimmagingRecordAll.isSuccess || - !scrimmagingRecordUnranked.isSuccess || - !scrimmagingRecordRanked.isSuccess ? ( + {scrimmagingRecordAll.isError || + scrimmagingRecordUnranked.isError || + scrimmagingRecordRanked.isError ? (
- Loading... + Error fetching scrimmaging record.
) : (
@@ -70,9 +69,10 @@ const ScrimmagingRecord: React.FC = ({ scrimmageType={ CompeteMatchScrimmagingRecordRetrieveScrimmageTypeEnum.All } - wins={scrimmagingRecordAll.data.wins ?? 0} - losses={scrimmagingRecordAll.data.losses ?? 0} - ties={scrimmagingRecordAll.data.ties ?? 0} + loading={scrimmagingRecordAll.isFetching} + wins={scrimmagingRecordAll.data?.wins ?? 0} + losses={scrimmagingRecordAll.data?.losses ?? 0} + ties={scrimmagingRecordAll.data?.ties ?? 0} /> )} {!hideUnranked && ( @@ -80,9 +80,10 @@ const ScrimmagingRecord: React.FC = ({ scrimmageType={ CompeteMatchScrimmagingRecordRetrieveScrimmageTypeEnum.Unranked } - wins={scrimmagingRecordUnranked.data.wins ?? 0} - losses={scrimmagingRecordUnranked.data.losses ?? 0} - ties={scrimmagingRecordUnranked.data.ties ?? 0} + loading={scrimmagingRecordUnranked.isFetching} + wins={scrimmagingRecordUnranked.data?.wins ?? 0} + losses={scrimmagingRecordUnranked.data?.losses ?? 0} + ties={scrimmagingRecordUnranked.data?.ties ?? 0} /> )} {!hideRanked && ( @@ -90,9 +91,10 @@ const ScrimmagingRecord: React.FC = ({ scrimmageType={ CompeteMatchScrimmagingRecordRetrieveScrimmageTypeEnum.Ranked } - wins={scrimmagingRecordRanked.data.wins ?? 0} - losses={scrimmagingRecordRanked.data.losses ?? 0} - ties={scrimmagingRecordRanked.data.ties ?? 0} + loading={scrimmagingRecordRanked.isFetching} + wins={scrimmagingRecordRanked.data?.wins ?? 0} + losses={scrimmagingRecordRanked.data?.losses ?? 0} + ties={scrimmagingRecordRanked.data?.ties ?? 0} /> )}
diff --git a/frontend2/src/components/compete/WinLossTie.tsx b/frontend2/src/components/compete/WinLossTie.tsx index b5bc94520..75062d4c1 100644 --- a/frontend2/src/components/compete/WinLossTie.tsx +++ b/frontend2/src/components/compete/WinLossTie.tsx @@ -1,11 +1,14 @@ -import React from "react"; +import React, { useMemo } from "react"; import { CompeteMatchScrimmagingRecordRetrieveScrimmageTypeEnum } from "api/_autogen"; +import Spinner from "components/Spinner"; +import { isNil } from "lodash"; interface WinLossTieProps { scrimmageType: CompeteMatchScrimmagingRecordRetrieveScrimmageTypeEnum; wins: number; losses: number; ties: number; + loading?: boolean; className?: string; } @@ -21,8 +24,28 @@ const WinLossTie: React.FC = ({ wins, losses, ties, + loading, className = "", }) => { + const HEADER = "w-full border-t-2 border-b-2 border-solid border-cyan-600 text-center"; + + const dataClassName = useMemo(() => { + const baseClassName = "w-full p-1"; + if (!isNil(loading) && loading) { + return `${baseClassName} flex flex-row items-center justify-center`; + } else { + return `${baseClassName} text-center font-semibold`; + } + }, [loading]); + + const dataOrLoading = (count: number): JSX.Element => { + if (!isNil(loading) && loading) { + return ; + } else { + return <>{count}; + } + }; + return (
= ({
{scrimmageTypeToName[scrimmageType]}
- + Wins - + Losses - + Ties -
- {wins} +
+ {dataOrLoading(wins)}
-
- {losses} +
+ {dataOrLoading(losses)}
-
- {ties} +
+ {dataOrLoading(ties)}
);