mrgunflame / dynamictournament Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
We should use wp capabilities to decide if a logged in user is allowed to edit the tournament scores. Probably also split up administration (edit team data) and moderation (edit scores only).
These methods use get_unchecked_mut
to skip out-of-bounds checking. Since Matches can now publicly created, this can cause UB without unsafe.
Example:
// Random oob indexes here.
let m = NextMatches::new(Some((128, 0), Some((128)));
// But `matches` has length 0.
let mut matches = Matches::<u8>::new();
// UB
let _ref = m.winner_mut(&mut matches).unwrap();
_ref.is_empty();
Both methods should make use of their Option
return type to check if they are out-of-bounds. Since this involves more runtime checks there should also be alternative unsafe {winner_mut_unchecked, loser_mut_unchecked, winner_match_mut_unchecked, loser_match_mut_unchecked}
.
Allow the http server to bind to a unix socket. This is convenient and more performant than using a TCP socket when no external communication is required.
bind
config value to either parse into an SocketAddr
or PathBuf
.PathBuf
http::bind
function to accept either value (enum)UnixListener
and UnixStream
A fullscreen mode for the bracket view. This setting should preferably be available without having to interact with the page (e.g. url path, query).
When updating a match that already had a winner declared, the next match is always updated using Node::new
, causing it to take EntrantScore::default()
. When updating a match, it should check for exactly EntrantSpot::TBD
and only then overwrite the spot.
Tracking potential changes for the planned v4 API.
Allow the creation of completely custom fields. This can be applied to both teams and players (as part of a team or standalone). The change allows for greater flexibility for what fields are needed where. The custom fields should be displayed on the Entrants/Team page. It may also be useful add an extra flag to define whether the field would be displayed.
Custom fields will also make roles obsolete. They can be implemented using custom fields instead.
If fields are predefined for every tournament this also allows better input and group support. A field could for example be:
The current versions all use json integers to represent ids. This however prevents bigger id values (e.g. u64) to be represented in json. Moving to string-encoded strings removes this limitation and virtually no added runtime costs.
Currently systems only support options with a default value. This is fine for elimination style brackets, but can be rather limiting for group-stage style brackets.
Currently, if an expired auth token is loaded from storage, the token is not refreshed when a websocket connection is opened. It fails silently and prevents updating scores.
Add the option to configure a prefix for database tables. This prevents potential conflicts when sharing the same database with other applications or running multiple dynamic-tournament instances using the same database.
prefix
(or similar)When loading the Bracket component while the auth token is still being refreshed the WebSocket connection will not be authenticated. This usually happen if /tournaments/:id/brackets/:id
is opening directly.
This can be solved by either:
Authorize
frame to the server once the auth token has been acquired (this seems to be the better option).When the winner of the semifinal round is at index 1 (position 2/blue) it is moved forward into both the finals match and the third place match.
There is an excessive amount of debug/trace logging in the web frontend slowing down the client and increasing file sizes. The release_max_level_warn
feature of the log
limits the logs emitted. It does need to be added when the crate is being built, adding it permanently will break logging of other crates.
The currently used websocket protocol is not yet stable and not well defined. The following things need to be decided upon:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.