Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The sports tab runs horizontally across the dashboard and displays one tab for each sport that is enabled. The tabs are dynamic and configured through the MySql database Sports
table.
The order the sports tabs are displayed in is defined by their id
value in the Sports
table.
There is no limit on the number of sports tabs that can be created. If the tabs reach the horizontal limit of the application then they will stack in to multiple rows. Realistically there should never be so many sports enabled at any one time to cause the tabs to be stacked.
Important: The sports tabs must be 100% configurable through the database only. Sports must be added or removed without any code changes.
Clicking on any unselected tab will:
Update the Leagues Tabs to show only the leagues associated with the selected sport.
Change the calendar display to show only events for the selected sport and league.
By default, when a new sports tab is selected the league will default to the first one in the list.
Text
Type
Comments
[sports name]
Dynamic
[icon]
Dynamic
The icon itself must exist in the corresponding asset/imgs
folder in the application
Note: There is no restriction on the icons/images to be used for each sport, but logically they should reflect the sport!
Caption
Type
Action
[Sport]
Text
Change calendar and leagues to selected sport.
Value set in table
Path and name defined in the icon
column of the table.
Sports
Sports
The dashboard is the main screen and is opened from the Home Page as soon as the user is logged in.
The components of the dashboard are:
The home page will be the first page to load and from where the user will be able to login or create an account.
Name
Constraints
Placeholder Text
User Name
Max Length: 24
Min Length 8
User name
Password
Max Length: 40
Min Length: 8
Password
Caption
Type
Action
LOGIN
Button
Create Account
Text
Exception
Error Message
No user name
Username not entered
No password
Password not entered
Password or user name is invalid
Invalid username or password
Captions
Inputs
Actions
Validation
Note: For the first release there will be no additional validation on the password format for strength or special characters etc. The only constraint is that the length must be >=8 and <= 40 characters.
Validate user name and password and then open the
Open the screen
The create account screen is opened from the and is the screen where every new account is created/registered.
Text
Type
Comments
Create New Account
Static
Data Proxy
Static
[proxy name]
Dynamic
Value set in config-dataproxy.json
*Required fields
Static
Name
Constraints
Placeholder Text
User Name
Max Length: 24
Min Length: 8
User name
Password
Max Length: 40
Min Length: 8
Password
Confirm Password
Max Length: 40
Min Length: 8
Confirm Password
Caption
Type
Action
REGISTER
Button
Validate all fields and then return to the Home Page
X
Image
Close the screen without adding a new account and return to the Home Page
Exception
Error Message
No user name
Username not entered
No password
Password not entered
Password too short
Password must be at least 8 characters
No confirm password
Confirm password not entered
Password and confirm password not the same
Password and Confirm Password are different
The dashboard header is shown at the top of the screen and is non-scrollable. That is to say that if the application is run on a small display such that the user has to scroll up and down to see all of the dashboard, the header is always 'pinned' at the top of the screen.
Text
Type
Comments
[title]
Dynamic
Default is CouchPotato but can be configured using the title1
and title2
properties in the config.json
file.
[icon/Image]
Dynamic
The icon or image shown in the top left of the header. Configured using the iconsmall
property in the config.json
file. Default is couch-potato.png
[version]
Dynamic
The version number/value of the release. Configured using the version property in the config.json
file.
Local Time
Static
[time]
Dynamic
The current time in the format [hh:mm:ss]. Time changes every second.
[username]
Dynamic
The (user)name of the logged in user.
Caption
Type
Action
👤
Icon
Replay
Button
Open the Replay screen.
The Game Selector is opened by clicking on the day cell of any calendar. The Game Selector is the engine behind all of the game incidents that are created and then posted to BOS.
The Game Selector is both used for creating new games/matches and then moving each game through the following standard incident workflow of create -> in_progress -> result -> finished.
The selector can also be used to Cancel or Delete games.
The game selector header displays the following information:
Captions
Actions
To add new game use the input fields at the bottom of the screen and then click on the ADD
button.
Captions
Inputs
Actions
Validation
Note: There is no validation to stop the same game from being created twice. The reason for this is because it's common in certain sports to have 'double-headers' where two teams play each other more than once in a day.
Note: There is no validation to stop a game start time from being in the passed. This is because game start times do change and it maybe necessary to start a game in the selector that has already started in real time.
Each new game will have its status set to Not Started
To start a game click on the Start
button next to the game. The game status will then change to In Progress
Actions
To finish a game enter the score for both home and away teams and click on the Finish
button next to the game. The game status will then change to Finished
Inputs
Actions
Note: It's not possible to corrects scores and re-send them to BOS. For this reason the finish
incident is sent immediately after the result
incident as a result of just clicking on the Finish
button.
Any game can be cancelled as long as it's either Not Started
or In Progress.
To cancel a game click on the Cancel
text next to the game.
A confirmation message will be shown.
Click on Yes
to cancel the game (game status will then change to Canceled)
or No
to to return without canceling.
A canceled
incident will be sent to BOS.
Tip: for the purposes of BOS incidents 'canceled' can also be interpreted as postponed but not as delayed. A delayed game is expected to restart. But once a game has been canceled it can't be restarted. If a game is canceled and then played the following day it would have to re-created with the new start time.
A game can only be deleted if it hasn't been started (has a status of Not Started
).
To delete a game click on the Delete text next to the game.
A confirmation message will be shown.
Click on Yes
to delete the game (game will be removed) or No
to to return without deleting.
If a game is deleted than a canceled
incident must also be sent to BOS so that BOS can tag the game in the same way as a canceled game.
Note: The difference between a canceled game and a deleted game is that a deleted game is basically a game that was entered in error and once deleted is removed from the database so it can be re-entered correctly if needed. A canceled game is a proper game that for one reason or other doesn't take place after being created correctly.
The selector grid is where all games are recorded as they get entered and moved through the workflow.
The selector grid is made up as follows:
Open the .
A incident will be pushed to the BOS instances.
An incident will be pushed to the BOS instances with the whistle_start_time
set to the time when the Start
button was clicked.
A incident followed by a incident will be pushed to the BOS instances with the whistle_end_time
set to the time when the Finish button was clicked, and the result to the home score and away score values.
Text/Image
Type
Comments
[league logo]
Dynamic
The logo of the selected league
[league name]
Dynamic
The name of the selected league
[date]
Dynamic
The date of the games.
Caption
Type
Action
X
Button
Close the game selector.
Text/Image
Type
Comments
Start
Static
Home Team
Static
Away Team
Static
Name
Type
Constraints
Start
Date Selector
Any valid date
Home Team
Drop Down selector
Drop down list of all teams associated with the selected sport and league.
Away Team
Drop Down selector
Drop down list of all teams associated with the selected sport and league.
Caption
Type
Action
ADD +
Button
Add the game to the list of created games.
Exception
Error Message
No start time
Start time not entered
Home Team
No home team selected
Away Team
No away team selected
Home Team and Away Team must be different
Teams must be different
Caption
Type
Action
Start
Button
Start the selected game.
Name
Type
Constraints
Home Score
Text Box
Numeric, max 999
Away
Score
Text Box
Numeric, max 999
Caption
Type
Action
Finish
Button
Finish the selected game and record the score.
Column
Type
Description
Start
Text
Start time of the game
Game
Text
Home team v Away team with logos
Home Score
Input
The home team score.
Away Score
Input
The away team score.
Actions
Button/Hyperlinks
Changes according to the status of a game. Available options are:
Start Finish Cancel Delete
Status
Caption
The status of the game, one of:
Not Started
In Progress
Finished
Cancelled
create
in_progress
result
finish
The calendar component is the main 'engine' of the application. It's here that the user will navigate through, enter and select new games.
The calendar will dynamically create a month plan for each month selected using the forward (>) and backward (<) selectors. There will be no upper or lower limits for the first release.
Every time the calendar changes from December -> January or January <- December the year will change accordingly.
The numbers of days will be adjusted for each month and take into account leap years.
Weekdays will be displayed as Sunday -> Saturday.
The current day should be a different colour and larger than the other days.
Moving the cursor over any day cell will highlight it.
If a day has at least one game scheduled then the crest for the league associated with the current calendar will be shown in that day cell.
If a day has at least one game scheduled then a badge for the total number of games will be shown in that day cell.
Text
Type
Comments
[Month]
Dynamic
Changes according to the selected month.
[Year]
Dynamic
Changes according to the movement of the month.
Day Names
Static
Sunday thru Saturday
[Day Number]
Dynamic
Generated according to the number of days in the month and the day name of the first day
[League Crest]
Dynamic
Depends on the sport and league for the calendar at the time.
[Game Counter]
Dynamic
The number of games for the date, sport, league in any given day cell.
Caption
Type
Action
<
Text
Move month forward
>
Text
Move month backward
[Day Cell]
Button
The account menu is accessed by clicking on the user icon at the far right of the header.
The account menu has two features.
Click on the Change Password menu item to open the Change Password screen
Click on the Log Out menu item to log out of the application and return to the Home Page.
Note: The Account Menu will automatically close after 10 seconds if it isn't used.
The replay screen is displayed by clicking on the REPLAY
button on the Dashboard header.
The purpose of the Replay feature is to give the user a manual way to send, or re-send, game create incidents to all of the BOS endpoints if for any reason they weren't correctly sent before.
Normally this feature shouldn't need to be used very often as a create incident is automatically sent every time a game is created. But there could be occasions when the application correctly records a game as being created but the information isn't recorded by the BOS nodes. If that happened then running a Replay will 'flush' all the games between the start and end dates and send create incidents to the BOS nodes a second time.
Important: The Replay feature can only be used for games that are not yet started. Once a game is started a new create incident would be ignored.
Sports and leagues can be selected individually using check-boxes, or all sports and leagues can be selected or de-selected using the Select All checkbox/toggle.
The range of data to be replayed will be set from the Start and End fields.
Captions
Text/Image
Type
Comments
Data Replay
Static
Select All
Static
[sport]
Dynamic
[league]
Dynamic
[sport icon]
Dynamic
[league icon]
Dynamic
Start:
Static
End:
Static
Inputs
Name
Type
Constraints
Select All
Checkbox
[sport]
Checkbox
[league]
Checkbox
Start
List
Valid date from list
End
List
Valid date from list
Actions
Caption
Type
Action
REPLAY ⤵
Button
Start the Replay
X
Image
Close the screen.
Validation
Exception
Error Message
No start date
Start date not entered
No end date
End data not entered
End date before start date
End date is before the Start date
The notifications panel is displayed on the right side of the dashboard and is where all notifications (reminders) will be posted for all games about to start or finish.
The notifications will be refreshed at a configurable millisecond interval set in the notifications->delay
property in config-dataproxy.json
. The default will be 3,000 (3 seconds).
Each notification will take the form of a 'note' which will have the following information:
The colour of the notes is very important and must be visibly obvious. The colour of the note is set by the following criteria:
Green
Any game that is in the range 30 - 15 minutes to it's scheduled start time.
Any game that is in the range 30 - 15 minutes from it's predicted end time.
Amber
Any game that is in the range 1 - 14 minutes to it's scheduled start time.
Any game that is in the range 1 - 14 minutes from it's predicted end time.
Red
Any game that should have started according to its scheduled start time.
Any game that is in the range 30 - 15 minutes to it's predicted end time.
The notifications rely on the start and end times of each game. The start time is taken as the time entered for any game when it was created, this is the only value that can be used.
The end time is more complicated because for many sports it's very hard to predict when a game ends because of time-outs, extra-time etc. For example, a game of soccer is much more predictable because the clock doesn't stop during play. So a game is likely to be two halves of 45 minutes, 15 minutes of half-time and perhaps 5 minutes of extra time, so 45+45+15+5 = 110 minutes.
However, a game of football, even thought it's four quarters of 15 minutes, has time-outs and regular clock stops, so the time the game will finish is a very broad average.
The duration of any sport is set in the duration
column of the sport
table. The default values are based on the accepted average durations for these sports.
Note: Because the end times are largely unpredictable the notification for game finishes should say "might have finished" rather than "should have finished"
Text/Image
Type
Comments
[icon]
Dynamic
The icon associated with the league for the game.
[start date/time]
Dynamic
The start date and time of the game
[sport] ([league])
Dynamic
The sport and league of the game
[home team] v [away team]
Dynamic
The home and away teams
[Status]
Dynamic
The time in minutes until start or end and the following text according to the rules above:
STARTS IN [x] MINUTES
SHOULD HAVE STARTED
MIGHT FINISH FINISH IN [x] MINUTES
MIGHT HAVE FINISHED
Each note is tied to a game and as such will be automatically removed from the notification panel as soon as the status of the game is updated. For example, if a note states that game x "SHOULD HAVE STARTED", then as soon as the game is started from the game selector, the note will be removed.
To keep things tidy notes can be set to be be automatically removed after a set interval (in hours). This means that if games haven't been started, instead of the warning note appearing even after [x] days when there would be no point updating the status of the game, it will be removed.
The number of hours after which a notes should be removed is set in the notifications->end
property in config-dataproxy.json.
The default value is 240 (10 days).
Each note is 'clickable', and when any note is clicked on it will automatically open the game selector for the selected date / league / sport combination. The game in the selector, that corresponds to the game on the selected note, will be highlighted for easy identification. For more information see:
The leagues tab runs vertically down the left side of the dashboard and displays one tab for each league that is configured for the selected sport. The tabs are dynamic and configured through the MySql database Leagues
table.
The order the leagues tabs are displayed in is defined by their id
value in the Leagues
table.
There is no limit on the number of sports tabs that can be created. If the tabs reach the vertical limit of the application then they will stack in to multiple columns. Realistically there should never be so many leagues enabled at any one time to cause the tabs to be stacked.
Important: The leagues tabs must be 100% configurable through the database only. Leagues must be added or removed without any code changes.
Clicking on any unselected tab will change the calendar display to show only events for the selected sport and league.
Text
Type
Comments
[league name]
Dynamic
[icon]
Dynamic
The icon itself must exist in the corresponding asset/imgs/leagues
folder in the application.
Caption
Type
Action
[League]
Text
Change calendar to the selected league of the selected sport.
Open the screen
All sport name in the table
All league names associated with the selected sport taken from the table
Applicable sport icon in the table
Applicable league icon in the table
Value set in table.
Path and name defined in the icon
column of the table.
Leagues
Leagues
The Change Password screen is opened by clicking on the Change Password
menu item in the account menu.
Captions
Text
Type
Comments
Change Password
Static
Required fields*
Static
Inputs
Name
Constraints
Placeholder Text
Current Password
Max Length: 40
Min Length: 8
Current Password
New Password
Max Length: 40
Min Length: 8
New Password
Confirm Password
Max Length: 40
Min Length: 8
Confirm Password
Actions
Caption
Type
Action
CHANGE PASSWORD
Button
X
Image
Validation
Exception
Error Message
No current password
Current password not entered
Current password is wrong
Current password is incorrect.
No new password
New password not entered
New password too short
New password must be at least 8 characters
No confirm new password
Confirm new password not entered.
Confirm new password too short
Confirm new password must be at least 8 characters
New and confirm new don't match
New password and confirm new password are different
Note: For the first release there will be no additional validation on the password format for strength or special characters etc. The only constraint is that the length must be >=8 and <= 40 characters.
Validate all fields then update the password and return to the
Close the screen without adding a new account and return to the