Code Monkey home page Code Monkey logo

scoreboard's People

Contributors

asquared avatar peteritism avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

vicomte

scoreboard's Issues

Need the ability to select sports from the front end

There have been several errors during live productions because the wrong sport is configured. Need to build a mechanism for keeping track of sport configuration data (clock settings, strings - manup/powerplay/whatever it's called, and anything else we might think of)

Serial-number code doesn't work right when multiple requests are parallelized

For example, open up two scoreboard tabs. Set (e.g.) a delayed penalty in one. Set (e.g.) empty net in the second one. It goes nuts! This is because these actions fire off two PUT requests in rapid succession. In the second tab, the first PUT request fails with a conflict, but meanwhile the second one has already been initiated, and the data serial number has now been incremented by two (resulting in the server accepting it).

Basically, we need to check that the server dataSerial is <= the client dataSerial before incrementing the client dataSerial and doing a PUT request. If it is not, then we may not even try to increment the dataSerial, because we are already in an invalid state.

Separate global status and global announce in UI

Having one input for text is limiting to what can be done, especially with the 'announce' functionality. 'Announce' is difficult to use because the current UI configuration doesn't properly allow for message queueing as originally intended. 'Announce' also needs to work very quickly (e.g., after a goal scored), and the current UI is to clunky to allow it. Future templates may also allow both a 'status' and an 'announce' to be displayed simultaneously.

On the 'announce' side of things, I propose creating a front end queue on top of the back end 'announce' queue that would allow the user to organize a series of announcements, then send them to be displayed, rather than the current race to type in the next announcement before the current announcement fades away. This opens up the UI to better feedback as to which announce status is currently up, repeating announcements, and pausing announcements among other potential improvements.

For football, add a "field goal attempt" button

Now that we have RTD sync and know the ball position at all times, we should have a button to calculate the distance of a field goal attempt and show something like "45 yard FG attempt".

No confirmation of successful autosync

There is no front-end indication of successful sync. The various sync toggles will indicate whether sync is on or off, but when on, there is no confirmation of actual synchronization. There are obviously limitations based on what each hardware sync device is capable of, but I believe there should be enough information from each to determine sync status.

During a normal production, this likely wouldn't be an issue because the scoreboard is being watched by enough eyes to identify an issue, but for smaller crew productions, especially single cams, the sync failure may go unnoticed for periods of time, if there is no apparent 'error.'

Play clock reset detection

The play clock (possibly down and distance as well) should automatically disappear when play starts. It should be possible to detect this in most cases by observing when the play clock increases. (While play is pending, the play clock is likely to increase only in very rare circumstances - e.g. a penalty or timeout situation.)

Last 59.9 seconds of play - shaky

When the scoreboard is under a minute and switches to tenths of a second, the fixed-width numerals are shaky. It seems to shake on the ".1," but 1s when the scoreboard is counting by second (rather than by tenth of a second) don't pose an issue.

Function name style

While investigating #41 I discovered we have a bit of a consistency issue with function names. Some functions are "active voice" (verb-noun - e.g. postGlobalStatus, putGameState) while others are "passive voice" (noun-verb - e.g. fieldGoalDisplay, ddDisplay). Some don't even have a verb (e.g. ytgCustom) Since it's rare in English for the object of a verb to come before the verb, I would recommend that we change these to the verb-noun style (e.g. "displayFieldGoalAttempt", "displayDownDistance") or add a verb if needed (e.g. setCustomYtg).

If we tackle this soon we should do it in a branch and test thoroughly because making changes like this could break all kinds of things.

Empty Nets - Penalties

If there is a penalty on both teams, and I give one of them an empty net, it says power play. This is a 5 on 4, but not a power play.

Maybe say something like Empty Net - M on N, while highlighting the team with the empty net.

Setting Period Independent of Time

In current version; period and time is submitted as one package. Would be useful if you could do them independently so 1) you only have to edit one thing and 2) you don't accidentally screw the other one up.
Also useful in sports that don't require time, but require period (e.g., baseball)

Set remaining time for penalties

The ability to change the remaining time of a penalty (one already created) would allow easier correction of errors. It is currently too difficult to properly correct a penalty if it wasn't set correctly within the stoppage window.

Rework penalty queuing

The current penalty queue system isn't very flexible. First, it can't adapt easily to changing game rules, such as the number of penalties being served at once. Also, it doesn't really play nice with the format used by the RTD sync feed. Using a single queue for all penalties could eliminate some of these issues, but might introduce new ones.

In refactoring this, I'd like to avoid putting timers into the team state if possible. Perhaps individual penalties should have a time-assessed field, instead of that being a property of the queue. It's pretty easy to back out a time assessed from the RTD feed, so that might be the way to go.

It may be worth calculating tenths of a second between the last RTD time message and either now or the most recent "stop" message to allow penalty timers to be precise to the nearest tenth.

Add configurable option to disable display of 1/10 seconds

Occasionally, scoreboard data feeds do not provide data to within 1/10 second during the last minute of play. This is a problem, because the on-screen scoreboard always displays the tenths even if they are not counting. Interpolating from the clock feed might be possible but will be a lot of work and might result in glitches if the scoreboard doesn't give us a run/stop flag. Adding an option to just disable the display should work well and be easy to implement.

Swappable scoreboard template

Corresponds directly to rpitv/rpits#93.

Basically just abstracting out what we have now to be the 'default' template and providing a way to choose between them. I don't see this being as important for scoreboard as it would be for titles, but it could be useful for both programs.

Single JSON data feed

Instead of pulling from multiple URLs when updating, a single JSON file would allow for everything to be easily tied to the success/failure of pulling it.

Sync sport information between server and UI

Include sport in the saved data stream so that a sport doesn't need to be selected each time the UI is loaded.

Add a better indication of which sport is selected (currently only shown in page title)

Sport mode can be uninitialized on startup

Sometimes the scoreboard doesn't know what sport is being scored. This leads to awkward situations where we have power play timers up with no descriptive phrase, but a big blank space where it should be.

Auto-Blur Fields After XX Time

If the user enters data into a field, but does not click out of the field; shortcuts do not work and can result in undesirable characters be entered into the scoreboard. A 10-15 second timer to auto-blur the field should resolve this.

Suggestion: Keyboard shortcuts

I feel that the addition of keyboard shortcuts (if possible) would allow for quicker and more accurate scoreboard operation. A quick example could be using space bar to bring up and down the scoreboard (similar to the graphics implementation).

UI response after clearing a custom team status when other statuses are 'checked'

Teams have preset, toggle-able statuses. If a timeout is called for a team, 'Timeout' is toggled and it is shown as the team status. If, during that timeout, a flag is thrown on the team taking a timeout, 'Flag' is toggled and is shown as the team status. When the infraction is resolved and 'Flag' is unchecked, the front-end looks for the next status (if there is one), which in this case is 'Timeout,' and 'Timeout' is once again shown as the team status.

Go back to 'Timeout' being checked, followed by 'Flag' being checked. If the user uses the custom status field to announce the (e.g., holding) penalty, 'Holding' becomes the team status. The issues occur when trying to clear the custom status only.

Issues:

  • Pressing the 'Clear' button to erase a custom team status also clears preset statuses
  • Manually deleting (backspacing, etc.) a custom team status, leaves the preset statuses ('Timeout' and 'Flag' in this case) as checked, however, no status is shown for the team, creating UI confusion.

Possible Solutions:

  • When the custom status is changed to '' (blank), all team statuses are unchecked (probably not desired)
  • Add a second 'Clear' button for only the custom status which will properly trigger the next team status to display (likely to create confusion with multiple 'Clear' buttons)
  • Entering a custom team status creates a temporary new toggle-able button with that status. When unchecked, the button disappears and the front-end reacts as it normally would with the toggling of a preset status button.

(Empty Net is not affected by this because it uses different code to calculate team strength for man-up/powerplay)

No "neutral" flag button

We need a button that just brings up the FLAG text without highlighting either team. This existed at one point but is now broken.

Default display status should be down

This is an issue that appeared before and was fixed by @asquared but unintentionally reverted somewhere along the line.

When the graphics program is started the scoreboard defaults to "up." This can lead to undesired results (as seen in curling). Default should be down, not last state, because scoreboard may lose sync feed or display other undesired content when restarted.

Transition can be restarted while already in progress

If the up or down buttons are clicked while a transition is already in progress, the transition is interrupted and starts again from the beginning. This is problematic, because it is easy to click the button twice by accident.

Changing Sport -> Get rid of things that this sport can't have

If there was a power play while in hockey mode, switch to football. At this point you can't get rid of the power play, without switching back to hockey mode.

When changing sports, it should automatically get rid of things that can't happen.

If not in football, the dot next to team (possession) shouldn't be a thing.
If not in hockey, power play should not be a thing.

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.