jluttine / bayes-league

Bayesian ranking of players in a league/tournament
GNU Affero General Public License v3.0
0 stars 0 forks source link

Stages and ranking history #3

Closed jluttine closed 1 year ago

jluttine commented 1 year ago

Add a possibility to designate a match into a stage (e.g., group stage round 1, quarter-final stage, semi-final stage, etc).

For each stage, save the ranking so the ranking history can be explored based on stages. ("What was the ranking after the third round?")

Add dependencies among the stages so that a stage can have "parent" stages which means that the matches from those stages are taken into account as well. This way stages can also be independent of each other. For instance, groups A and B can be independent but the rounds within each group depend on the previous rounds:

Then, a group can have multiple parents so that, for instance, the playoffs can depend on the group stages:

Is it possible to guarantee that it's acyclic in the database? Perhaps add a custom validator.. But still be prepared to handle cycles without hanging indefinitely.

In the ranking page, one can see the latest overall ranking which shows all players and takes into account all matches. But there should be tabs/links for each stage as well so one can see the ranking of a stage.

Whenever a match is edited or added, all the stage ranking and its child stage rankings need to be updated.

jluttine commented 1 year ago

A minor feature request: Add a possibility to make the stages automatic based on date. Each date is a new stage, so the history can be explored based on datetime in leagues where there are no stages otherwise. Not important though. This could be done manually anyway.

jluttine commented 1 year ago

Perhaps don't make dependencies recursive. That is, for each stage, define which other stages are taken into account in the ranking calculation but don't recurse. One can choose the grandparents explicitly so it's still possible to have the same outcome. But it doesn't force recursion so it's possible to have arbitrary dependencies, for instance, A -> B, A & B -> C but B & C -> D (not A & B & C -> D which would follow from recursion).

jluttine commented 1 year ago

Stages are now implemented. They can be manually sorted too. Ranking history isn't yet shown though and no automatic stages either.