Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
189f63c
[npm]: Bump react-bootstrap from 2.10.7 to 2.10.9
dependabot[bot] Feb 3, 2025
b403a5d
1.1.17
gearbox4026 Feb 3, 2025
ba89945
[npm]: Bump prettier from 3.3.3 to 3.5.0
dependabot[bot] Feb 10, 2025
a10e233
[npm]: Bump @yudiel/react-qr-scanner from 2.1.0 to 2.2.1
dependabot[bot] Feb 10, 2025
072dd64
1.1.20
gearbox4026 Feb 10, 2025
45a546a
1.1.20
gearbox4026 Feb 10, 2025
cb49001
Creating Branch
BanEvading Feb 25, 2025
9096033
Added Matches Loading text
BanEvading Feb 25, 2025
904aa93
add text
BanEvading Feb 25, 2025
fa90291
1.2.4
gearbox4026 Feb 25, 2025
de6a072
Changing border thickness
BanEvading Feb 25, 2025
6aed969
Changing border thickness
BanEvading Feb 25, 2025
fb99499
Adding border color
BanEvading Feb 25, 2025
fb4a540
1.2.5
gearbox4026 Feb 25, 2025
f96b0e1
Return DB session
renatodellosso Feb 27, 2025
0827676
Merge branch 'main' into Move-InsightsAndSettings-Logic-to-component
Tr01ler Feb 27, 2025
7c7f490
don't overwrite user IDs
renatodellosso Feb 27, 2025
9de9dfb
Merge branch 'main' into Move-InsightsAndSettings-Logic-to-component
Tr01ler Feb 27, 2025
eab5879
Merge pull request #455 from Decatur-Robotics/Move-InsightsAndSetting…
renatodellosso Feb 27, 2025
0ff2a1b
Remove user ID assignment from authentication process and improve log…
renatodellosso Feb 27, 2025
cc59b57
Merge branch 'main' of github.com:Decatur-Robotics/Gearbox
renatodellosso Feb 27, 2025
12acc67
Logs for AccessLevels
renatodellosso Feb 27, 2025
9301a0c
Don't set id for existing users
renatodellosso Feb 27, 2025
9504cb1
Fix access level errors
renatodellosso Feb 27, 2025
2b6565f
Less logs in Auth
renatodellosso Feb 27, 2025
45919e7
New accounts work
renatodellosso Feb 27, 2025
fd3ea1e
Merge branch 'main' into improved-scouter-clarity
renatodellosso Feb 27, 2025
a37b288
Add comp log
renatodellosso Feb 28, 2025
5f06b2f
Merge branch 'main' into improved-scouter-clarity
renatodellosso Feb 28, 2025
9f1e813
Add match log
renatodellosso Feb 28, 2025
e34b85f
Use match number from TBA to set match number in document
renatodellosso Feb 28, 2025
3e02832
Less logs and better code for visualizing scouter assignment
renatodellosso Feb 28, 2025
7c27de6
Don't allow russian emails
renatodellosso Feb 28, 2025
f226226
Add captcha
renatodellosso Feb 28, 2025
dcf2372
Add log for blocked emails
renatodellosso Feb 28, 2025
acbb20f
Link to sign in page in header
renatodellosso Feb 28, 2025
6dec8c1
Also link to sign in
renatodellosso Feb 28, 2025
89ffd9b
Add log for recaptcha key
renatodellosso Mar 1, 2025
eaf81a3
Add captcha key to production public env
renatodellosso Mar 1, 2025
66df04f
Clean up Recaptcha setup
renatodellosso Mar 1, 2025
167c40a
Remove old email blacklist
renatodellosso Mar 1, 2025
1fa4a42
Use Logger in index.ts
renatodellosso Mar 1, 2025
f58eb74
Changed "loading matches" to "matches loaded"
BanEvading Mar 3, 2025
1363de5
Merge branch 'improved-scouter-clarity' of https://github.com/Decatur…
BanEvading Mar 3, 2025
9ad91fa
Undid previous change. Moved the side of things on ternary.
BanEvading Mar 3, 2025
6c8a0e8
Merge branch 'main' into improved-scouter-clarity
BanEvading Mar 3, 2025
4aeecc5
Swap colors for manually editing matches
renatodellosso Mar 3, 2025
6e05f42
Merge pull request #454 from Decatur-Robotics/improved-scouter-clarity
renatodellosso Mar 3, 2025
5cbd1ab
Don't overwrite _id in remove
renatodellosso Mar 3, 2025
02e4105
Merge branch 'main' of github.com:Decatur-Robotics/Gearbox
renatodellosso Mar 3, 2025
39bdf15
shuld fix
BanEvading Mar 3, 2025
9e7c4b8
Merge pull request #458 from Decatur-Robotics/thing-wont-load
renatodellosso Mar 3, 2025
d544cdf
Update defaultGameId
renatodellosso Mar 3, 2025
a5a50f5
Fix removeUserFromTeam
renatodellosso Mar 3, 2025
f2f0587
Lower default TTL
renatodellosso Mar 3, 2025
fb22ea4
Merge branch 'main' into dependabot/npm_and_yarn/yudiel/react-qr-scan…
renatodellosso Mar 3, 2025
dc1fc5d
Merge branch 'main' into dependabot/npm_and_yarn/prettier-3.5.0
renatodellosso Mar 3, 2025
e7608c9
Merge branch 'main' into dependabot/npm_and_yarn/react-bootstrap-2.10.9
renatodellosso Mar 3, 2025
e3cbce0
Merge pull request #438 from Decatur-Robotics/dependabot/npm_and_yarn…
renatodellosso Mar 3, 2025
416791c
Merge pull request #437 from Decatur-Robotics/dependabot/npm_and_yarn…
renatodellosso Mar 3, 2025
f919c78
Merge pull request #428 from Decatur-Robotics/dependabot/npm_and_yarn…
renatodellosso Mar 3, 2025
06110d0
Switch to slug to ID lookup
renatodellosso Mar 4, 2025
6e0d4b4
Add findObjectBySlug to Mongo
renatodellosso Mar 4, 2025
171b085
Added an infocircle next to the subjective scouter indicator
BanEvading Mar 5, 2025
f56db2e
1.2.8
gearbox4026 Mar 5, 2025
9249529
Fixes Formatting
BanEvading Mar 5, 2025
b1f3168
Merge pull request #460 from Decatur-Robotics/infoCircle
BanEvading Mar 5, 2025
1c96955
Fix joining teams
renatodellosso Mar 6, 2025
42851a5
Add change username functionality and fix onboarding deps array
renatodellosso Mar 6, 2025
b8ac5c4
Bump version
renatodellosso Mar 6, 2025
6b266ad
Create reports when reloading a comp
renatodellosso Mar 6, 2025
4134d0a
Enable auth adapter logs
renatodellosso Mar 7, 2025
218181d
Started
renatodellosso Mar 7, 2025
5c8e2cd
More logs
renatodellosso Mar 7, 2025
1d1e103
More rollbar
renatodellosso Mar 7, 2025
724de73
Maintain .id on users
renatodellosso Mar 7, 2025
5b60fba
Rollbar
renatodellosso Mar 7, 2025
cd9ed40
More logs
renatodellosso Mar 7, 2025
eac1072
More logs
renatodellosso Mar 7, 2025
4e113a7
More logs
renatodellosso Mar 7, 2025
1b81fd8
Got Rollbar working
renatodellosso Mar 7, 2025
d44bd70
1.2.10
gearbox4026 Mar 7, 2025
502302b
Merge branch 'main' into rollbar
renatodellosso Mar 7, 2025
81a5db6
Fix build
renatodellosso Mar 7, 2025
30092b5
Merge pull request #462 from Decatur-Robotics/rollbar
renatodellosso Mar 7, 2025
b25d409
Remove test error on start up
renatodellosso Mar 7, 2025
4cfbc76
Reduce default rollbar threshold and track deploys
renatodellosso Mar 7, 2025
0dc5d85
1.2.11
gearbox4026 Mar 7, 2025
588e618
Separate RollbarUtils into client and server files
renatodellosso Mar 7, 2025
7735c27
Merge pull request #463 from Decatur-Robotics/remove-sec
renatodellosso Mar 7, 2025
db9af1c
Pre-run commit sha?
renatodellosso Mar 7, 2025
831eaf1
No more deploy for rollbar
renatodellosso Mar 7, 2025
c343e57
Track deploy in GH actions
renatodellosso Mar 7, 2025
3ad907a
Fix deploy start/finish updates
renatodellosso Mar 7, 2025
cebfb41
Better Rollbar set up
renatodellosso Mar 7, 2025
16ab88d
Bump version
renatodellosso Mar 7, 2025
189b86d
Add Rollbar to ClientApi
renatodellosso Mar 7, 2025
be13132
More accurate deploy tracking
renatodellosso Mar 7, 2025
96640eb
Pass rollbar token to notify_rollbar
renatodellosso Mar 7, 2025
187fd64
use secret-envs for envs in dockerbuild
renatodellosso Mar 7, 2025
ecd9c3a
Logs in Dockerfile
renatodellosso Mar 7, 2025
159574f
Log envs in ci action
renatodellosso Mar 7, 2025
098c14e
Fix inputs for ci
renatodellosso Mar 7, 2025
c8b4c9a
No env logs in Dockerfile
renatodellosso Mar 7, 2025
0e12c5a
Add GIT_SHA and DEPLOY_ID to environment variables
renatodellosso Mar 7, 2025
744c9a9
Status logs for rollbar deployment
renatodellosso Mar 7, 2025
045b103
Actually report the deployment
renatodellosso Mar 7, 2025
7397bcf
Don't regenerate pit reports on refresh comp
renatodellosso Mar 7, 2025
d33c472
Don't prompt if no matches
renatodellosso Mar 7, 2025
8742328
Add coral level to pit
renatodellosso Mar 7, 2025
8d8f377
Fix OAuth errors?
renatodellosso Mar 7, 2025
43ce570
Point NextAuth errors and warnings to Rollbar
renatodellosso Mar 7, 2025
3974297
Fix reloadComp
renatodellosso Mar 7, 2025
50667a7
Bump some rollbar warnings into errors
renatodellosso Mar 7, 2025
1d01e08
Add error logging for user not found in DbInterfaceAuthAdapter
renatodellosso Mar 7, 2025
a4e784b
More Auth adapter tests
renatodellosso Mar 7, 2025
d79dfdb
Fix comments?
renatodellosso Mar 7, 2025
abc0132
Reduce default TTL
renatodellosso Mar 7, 2025
f9298fe
Fix linkAccount
renatodellosso Mar 7, 2025
b94ef35
Even more unit tests
renatodellosso Mar 7, 2025
e568a3b
Add tests for create and use verification token
renatodellosso Mar 7, 2025
6812172
Fix test formatting
renatodellosso Mar 8, 2025
0d5084c
Fix Callback error in signin and fix custom error messages
renatodellosso Mar 8, 2025
348047c
Sort comments by match, clean up comment code
renatodellosso Mar 8, 2025
e5af8c6
Add slight left margin to comments
renatodellosso Mar 8, 2025
e173312
Add avg coral
renatodellosso Mar 8, 2025
6650eb9
Add teleop/auto to labels. Closes #465
renatodellosso Mar 8, 2025
82c17a9
Fix stat generation
renatodellosso Mar 8, 2025
f93c18e
Return null instead of throwing errors in adapter
renatodellosso Mar 8, 2025
2bcf3eb
Return null instead of throwing errors in adapter (pt 2)
renatodellosso Mar 8, 2025
dc3c808
Return null instead of throwing errors in adapter (pt 3)
renatodellosso Mar 8, 2025
73dcb79
Clear cookies note
renatodellosso Mar 8, 2025
c0b3ca3
Return null instead of session and user object in DbInterfaceAuthAdapter
renatodellosso Mar 8, 2025
d7b15d0
Mark nextauth errors in rollbar
renatodellosso Mar 8, 2025
2cac43d
Add robot number changing for reports
renatodellosso Mar 8, 2025
5e8e6e5
Refactor robot number update logic in match alliances
renatodellosso Mar 8, 2025
22f65af
Fix syntax error
renatodellosso Mar 8, 2025
36050f8
[npm]: Bump autoprefixer from 10.4.20 to 10.4.21
dependabot[bot] Mar 10, 2025
7126fc2
1.2.17
gearbox4026 Mar 10, 2025
f7e902f
Remove GIT_SHA
renatodellosso Mar 11, 2025
f63e8fc
Merge pull request #466 from Decatur-Robotics/dependabot/npm_and_yarn…
renatodellosso Mar 11, 2025
ff88f0c
Don't warn with rollbar on not found in most of DB adapter
renatodellosso Mar 11, 2025
c8ace7c
Merge branch 'main' of github.com:Decatur-Robotics/Gearbox
renatodellosso Mar 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .env.production
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
# We have to include these at build time, so this file is used to inject them into the build process.
NEXT_PUBLIC_API_URL=/api/
NEXT_PUBLIC_SLACK_CLIENT_ID=10831824934.7404945710466
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID=G-1BFJYBDC76
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID=G-1BFJYBDC76
NEXT_PUBLIC_RECAPTCHA_KEY=6Le63OUqAAAAABxxDrbaU9OywDLLHqutVwbw7a9d
6 changes: 4 additions & 2 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ on:
required: true
AWS_SECRET_ACCESS_KEY:
required: true
ROLLBAR_ACCESS_TOKEN:
required: true
workflow_dispatch:

permissions:
Expand All @@ -22,7 +24,7 @@ jobs:

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Download artifact
uses: actions/download-artifact@v4
with:
Expand All @@ -47,4 +49,4 @@ jobs:
run: aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }} && aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} && aws configure set region us-east-1

- name: Deploy to ECS
run: aws ecs update-service --cluster gearbox --service gearbox --force-new-deployment
run: aws ecs update-service --cluster gearbox --service gearbox --force-new-deployment
13 changes: 11 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
name: CI

on: [workflow_call, workflow_dispatch, pull_request]
on:
workflow_call:
inputs:
deploy_id:
type: string
required: true
workflow_dispatch:
pull_request:

jobs:
build:
Expand All @@ -17,7 +24,9 @@ jobs:
with:
tags: ghcr.io/decatur-robotics/gearbox:latest
outputs: type=docker,dest=/tmp/gearbox.tar

build-args: |
DEPLOY_ID=${{ inputs.deploy_id }}

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
Expand Down
35 changes: 35 additions & 0 deletions .github/workflows/notify_rollbar.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Notify Rollbar

on:
workflow_call:
secrets:
ROLLBAR_ACCESS_TOKEN:
required: true
outputs:
deploy_id:
value: ${{ jobs.notify.outputs.deploy_id }}
workflow_dispatch:

permissions:
packages: write

jobs:
notify:
runs-on: ubuntu-latest
environment: Production
outputs:
deploy_id: ${{ steps.rollbar_pre_deploy.outputs.deploy_id }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Notify deploy to Rollbar
uses: rollbar/[email protected]
id: rollbar_pre_deploy
with:
environment: "production"
version: ${{ github.sha }}
status: "started"
env:
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
ROLLBAR_USERNAME: ${{ github.actor }}
9 changes: 9 additions & 0 deletions .github/workflows/onpush.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,22 @@
workflow_dispatch:

jobs:
notify_rollbar:
uses: ./.github/workflows/notify_rollbar.yml
secrets:
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}

ci:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}
needs: notify_rollbar
uses: ./.github/workflows/ci.yml
with:
deploy_id: ${{ needs.notify_rollbar.outputs.deploy_id }}

cd:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {}
needs:
- ci
uses: ./.github/workflows/cd.yml
secrets:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
4 changes: 4 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,9 @@ RUN npm run build

EXPOSE 80

ARG DEPLOY_ID

ENV DEPLOY_ID=${DEPLOY_ID}

# ENTRYPOINT [ "bash" ] # Uncomment to operate the terminal in the container
CMD ["/usr/local/bin/npm", "run", "start"]
9 changes: 2 additions & 7 deletions components/Container.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,6 @@ export default function Container(props: ContainerProps) {
}, [eventSearch]);

useEffect(() => {
if (window.location.href.includes("signin")) {
console.log("triggered");
location.reload();
}

const loadTeams = async () => {
if (!user) {
return;
Expand Down Expand Up @@ -231,7 +226,7 @@ export default function Container(props: ContainerProps) {
</Link>
) : (
<a
href={"/api/auth/signin"}
href={"/signin"}
rel="noopener noreferrer"
target="_blank"
>
Expand Down Expand Up @@ -268,7 +263,7 @@ export default function Container(props: ContainerProps) {
<h2 className="card-title">Wait a minute...</h2>
<p>You need to sign in first!</p>
<div className="card-actions justify-end">
<Link href={"/api/auth/signin"}>
<Link href={"/signin"}>
<button className="btn btn-primary">Sign In</button>
</Link>
</div>
Expand Down
33 changes: 32 additions & 1 deletion components/competition/EditMatchModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,31 @@ export default function EditMatchModal(props: {
.then(loadMatches);
}

function changeTeamNumber(e: ChangeEvent<HTMLInputElement>, index: number) {
e.preventDefault();

const teamNumber = +e.target.value;
if (!teamNumber || !props.match?._id) return;

const reportId = props.match?.reports[index];
if (!props.reportsById[reportId]._id) return;

console.log(
`Changing team ${index} for match ${props.match?._id} to ${teamNumber}`,
);

api
.changeTeamNumberForReport(
match._id!.toString(),
props.reportsById[reportId]._id,
teamNumber,
)
.then(() => {
loadMatches();
loadReports();
});
}

return (
<dialog
id="edit-match-modal"
Expand Down Expand Up @@ -75,7 +100,13 @@ export default function EditMatchModal(props: {
<td className={index < 3 ? "text-blue-500" : "text-red-500"}>
{index < 3 ? "Blue" : "Red"} {(index % 3) + 1}
</td>
<td>{team}</td>
<td>
<input
onChange={(e) => changeTeamNumber(e, index)}
type="number"
defaultValue={team}
/>
</td>
<td>
<select onChange={(e) => changeScouter(e, reports[index])}>
{reports[index]?.user &&
Expand Down
2 changes: 1 addition & 1 deletion components/competition/InsightsAndSettingsCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ export default function InsightsAndSettingsCard(props: {
Number(matchNumber),
0,
MatchType.Qualifying,
blueAlliance as number[],
redAlliance as number[],
blueAlliance as number[],
);
} catch (e) {
console.error(e);
Expand Down
111 changes: 61 additions & 50 deletions components/competition/MatchScheduleCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ import {
} from "@/lib/Types";
import Link from "next/link";
import { BsGearFill } from "react-icons/bs";
import { FaSync, FaCheck } from "react-icons/fa";
import { FaSync, FaCheck, FaInfoCircle } from "react-icons/fa";
import { MdErrorOutline } from "react-icons/md";
import Avatar from "../Avatar";
import Loading from "../Loading";
import { AdvancedSession } from "@/lib/client/useCurrentSession";
import { useEffect } from "react";

export default function MatchScheduleCard(props: {
team: Team | undefined;
Expand Down Expand Up @@ -62,11 +63,14 @@ export default function MatchScheduleCard(props: {
showSubmittedMatches,
} = props;

const displayedMatches = showSubmittedMatches
? matches
: matches.filter((match) =>
match.reports.some((reportId) => !reportsById[reportId]?.submitted),
);
const unsubmittedMatches: Match[] = [];

for (const match of matches) {
if (match.reports.some((reportId) => !reportsById[reportId]?.submitted))
unsubmittedMatches.push(match);
}

const displayedMatches = showSubmittedMatches ? matches : unsubmittedMatches;

return (
<div className="w-full card bg-base-200 shadow-xl ">
Expand All @@ -80,54 +84,37 @@ export default function MatchScheduleCard(props: {
)}
</h1>
{isManager &&
matchesAssigned === false &&
Object.keys(usersById).length >= 6 ? (
matchesAssigned !== undefined ? (
matchesAssigned === false &&
Object.keys(usersById).length >= 6 &&
(!assigningMatches ? (
<div className="opacity-100 font-bold text-warning flex flex-row items-center justify-start space-x-3">
<div>
{!assigningMatches
? "Matches are not assigned"
: "Assigning matches"}
</div>
{!assigningMatches ? (
<button
className={
"btn btn-primary btn-sm " +
(assigningMatches ? "disabled" : "")
}
onClick={assignScouters}
>
Assign Matches
</button>
) : (
<BsGearFill
size={30}
className="animate-spin-slow text-white"
/>
)}
<div>Matches are not assigned.</div>
<button
className={
"btn btn-primary btn-sm " +
(assigningMatches ? "disabled" : "")
}
onClick={assignScouters}
>
Assign Matches
</button>
</div>
) : (
<progress className="progress w-full" />
)
) : (
<></>
)}
))}
<div className="divider my-0"></div>
{loadingMatches || loadingReports || loadingUsers ? (
<div className="w-full flex flex-col items-center justify-center">
<BsGearFill
className="animate-spin-slow"
size={75}
/>
{loadingMatches && <h1>Loading Matches...</h1>}
{loadingReports && <h1>Loading Reports...</h1>}
{loadingUsers && <h1>Loading Users...</h1>}
</div>
) : (
{!(loadingMatches && loadingReports && loadingUsers) ? (
<div className="w-full flex flex-col items-center space-y-2">
{noMatches || matches.length === 0 ? (
<div className="flex flex-col items-center justify-center font-bold space-y-4">
<h1>No Match Schedule Available</h1>
{loadingMatches ? (
<>
<Loading size={72} />
<h1>Matches Loading</h1>
</>
) : (
<h1>No Match Schedule Available</h1>
)}
<button
onClick={reloadCompetition}
className="btn btn-lg btn-primary"
Expand Down Expand Up @@ -201,9 +188,9 @@ export default function MatchScheduleCard(props: {
<a
href={`/${team?.slug}/${seasonSlug}/${comp?.slug}/${reportId}`}
key={reportId}
className={`${color} ${mine && !submitted ? "border-4" : "border-2"}
className={`${color} ${mine && !submitted ? "border-6 border-purple-500" : "border-2 border-white"}
${timeSinceCheckIn && timeSinceCheckIn < 10 && "avatar online"}
rounded-lg w-12 h-12 flex items-center justify-center text-white border-white`}
rounded-lg w-12 h-12 flex items-center justify-center text-white`}
>
<h1>{report.robotNumber}</h1>
</a>
Expand Down Expand Up @@ -280,12 +267,26 @@ export default function MatchScheduleCard(props: {
) : (
<div>
Subjective Scouter:{" "}
{usersById[match.subjectiveScouter ?? ""].name}
{usersById[match.subjectiveScouter ?? ""].name}{" "}
<div
className="tooltip before:w-[10rem] "
data-tip="Subjective Scouters watch the entire match and comment on what's going on"
>
<FaInfoCircle></FaInfoCircle>
</div>
</div>
)}
</div>
) : (
<div>No subjective scouter assigned</div>
<div>
No subjective scouter assigned{" "}
<div
className="tooltip before:w-[10rem] "
data-tip="Subjective Scouters watch the entire match and comment on what's going on"
>
<FaInfoCircle></FaInfoCircle>
</div>
</div>
)}
</div>
<a
Expand All @@ -312,6 +313,16 @@ export default function MatchScheduleCard(props: {
</div>
)}
</div>
) : (
<div className="w-full flex flex-col items-center justify-center">
<BsGearFill
className="animate-spin-slow"
size={75}
/>
{loadingMatches && <h1>Loading Matches...</h1>}
{loadingReports && <h1>Loading Reports...</h1>}
{loadingUsers && <h1>Loading Users...</h1>}
</div>
)}
</div>
</div>
Expand Down
Loading