Git Product home page Git Product logo

project-ems's Introduction

The Orange Alliance

Setup

  1. Install the latest version of Node.js from nodejs.org
  2. Run npm install

Running locally

Run npm run dev and open http://localhost:3000 with your browser to see the result.

Learn More

To learn more about Next.js, take a look at the following resources:

project-ems's People

Contributors

crispybacon1999 avatar dependabot[bot] avatar jfabellera avatar kyle-flynn avatar noahandrews avatar ofekashery avatar techno11 avatar thefallen127 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

revrobotics

project-ems's Issues

Seasons should be able to provide a settings tab

Last year, settings for FGC 2022 were added directly to the main Settings component, and had to be deleted after the event. This has multiple downsides:

  • It puts the repo in a weird state for usage with non-FGC events
  • After the FGC event concludes, it reduces the amount of testing you can do on how new changes affect FGC

It looks like we should be able to implement a per-season settings tab by adding a SettingsTab entry to the SeasonComponents interface.

Add "match preview" button to scoring app

Or move "field prep" button to before "prestart" button and rename it.

Match preview should just post the teams playing next onto the audience display. Maybe even set the field lights to green since post the green lights from "post results" won't be available for the very first match.

Foul count sometimes gets out of sync when updating

Steps to reproduce:

  1. Open head ref page and side ref page on 2 tablets/devices separate from the machine EMS is running on
  2. Start a match
  3. On side ref tablet, increase foul count
  4. Confirm head ref tablet sees the change
  5. Repeat step 3 like 20 times or so
  6. See that the head ref tablet will no longer match what is on the side ref tablet
  7. Update something else like storage level on side ref and the fouls will finally update

UI issues found during testing

@kyle-flynn

Much of this feedback comes from Greg and David

Referee app feedback

  • Referee pages often use team IDs instead of names. We definitely should use the team name instead (maybe even the long name), and ideally we'd also like to include the flag.
    • I have found the team identifier setting. We'd still like to include the flag though.
  • The referee app should fit on the tablets we're using without scrolling
    • A simple way to do this is to make the referee app enter fullscreen mode. Calling document.querySelector("body").requestFullscreen() from the console makes it fit nicely.
    • To test that it continues to fit as you make changes, use Chrome's Device Mode
      • Set the viewport size to 600x1000
      • Set the device type to Desktop (touch)
  • Scores should not be allowed to be set lower than 0 or higher than the max possible value. There are only 144 hydrogen balls, and 72 oxygen balls.
  • A thin line between each score/card/foul selection would be helpful for visual separation

Miscellaneous

  • The match detail editor is not implemented
  • The scoring app does not display the score breakdown
    • Side note, what are the zeros next to the red/yellow card selectors?
  • The non-functional notification bell icon should be hidden

If there are specific items here that you don't have time for and would like me to help with, let me know.

There were a few other issues that I'll just submit PRs for.

Replace `commit` button with a double action button

(Double action button like the prestart)

First action should be an all clear button that sets the lights to green.
Second button should be commit which will "lock in the scores" or whatever it does right now minus the green lights.

This would be useful if there is ever the case that referees are still talking about the score, but the field is ready to be reset. Also doesn't ruin your precious 12 column 6 buttons

FMS: Build Field Monitor

  • Create Socket Room
  • Broadcast Events from PLC
  • Broadcast Switch Prestart Events
  • Broadcast Driverstation Prestart Events
  • Broadcast AP Prestart Events
  • Build GUI

The match clock will slowly drift

MatchTimer works be decrementing the time remaining in a setInterval() callback. This is sub-optimal, because according to MDN, the delay parameter specifies the time in between each execution of the callback, meaning that the time that it takes to run the callback will not be counted. Additionally, since this is not a real-time system (potentially made worse by the fact that JS is single-threaded), the callback is not guaranteed to be called immediately once the specified delay has elapsed.

There should be a source-of-truth start time (set via performance.now(), which is a monotonic clock) that gets used to determine the amount of time left / state of the match.

FMS: Setup Field Hardware Sets

As a part of #37 , Each FMS service should register its self for "capture" and "assignment" to a field within EMS, here is the proposed flow

  • User logs into FMS local standalone service
  • FMS Service registers itself as an available field set to EMS user on their acct
  • User can select field set and assign it to a field within EMS
  • FMS Service can be further configured from there

Set up `vite-plugin-checker` to perform typescript checks on the frontend

Right now, the frontend is built using Vite during development, which uses esbuild to compile the Typescript files, but does not do any type checking. We should to set up vite-plugin-checker to check for Typescript errors. There is old code from previous seasons that currently has errors.

Under the status quo, you can break things without realizing it until you actually visit a broken page, since developers are unlikely to manually run the build script when vite handles auto-building for you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.