Giter Club home page Giter Club logo

oberhauser-dev / wrestling_scoreboard Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 4.43 MB

Wrestling software for managing team matches and competitions.

Home Page: https://oberhauser-dev.github.io/wrestling_scoreboard/

License: MIT License

Kotlin 0.02% Swift 0.31% Objective-C 0.01% Dart 93.59% CMake 2.04% C++ 2.87% C 0.16% HTML 0.60% Shell 0.11% Ruby 0.30%
wrestling scoreboard tournament bracket scoring mat ringen anzeige turnier mannschaftskampf

wrestling_scoreboard's Introduction

Wrestling Scoreboard

Repository for managing Wrestling software: client, server and shared libraries. Available for Linux, Windows, macOS, Web, Android and iOS.

Tags: scoreboard, wrestling, scoring, bracket, mat, team, fight, competition, tournament, display, points, bracket, team, athlete, bout

Screenshots

Installation

The App consists of three components, the client, the server and the database. You can download the client and the server for your preferred platforms from the Releases section.

For setting up the database and hosting a server, see:

Development

All the code is based on Dart and Flutter. For setting up Flutter, see the getting started guide.

Wrestling Scoreboard is a monorepo. Therefor it uses Melos to manage the project and dependencies. All the commands can be found in the melos.yaml file.

To install Melos, run the following command from your terminal:

flutter pub global activate melos

Next, at the root of your locally cloned repository bootstrap the projects dependencies:

melos bs

To format your code, call:

melos format

To create a new version of all packages, call:

melos version --all --prerelease --preid=beta --diff=v0.0.1-beta.9 --no-git-tag-version

Please read the documentation for setting up the according components:

If using Nginx as Reverse Proxy, you can take advantage of these config files.

License

Published under MIT license.

wrestling_scoreboard's People

Contributors

gustl22 avatar zomtir avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

wrestling_scoreboard's Issues

Feature: Flag for seasonPartition

E.g. in Germany we have two season halves, which have different configuration. The first half the wrestling styles are the opposite of the second half. So it would be good to:

  • add a flag seasonPartition to LeagueWeightClass
  • add a flag seasonPartition to TeamMatch
  • on edit TeamMatch only show the correct weight classes.
  • Check if generation of bouts is correct

BoutEdit

  • Edit for Bouts
  • Info Section leading to Lineup Edit
  • Lineup Edit: two buttons: Save Save & Generate with "Are you sure" dialog.
  • Add participations to lineup without weight class

Bugs in generating bouts

  • Put Save and Generate in the overview
  • Generating bouts, doesn't update the match (if changing participation, it still does not get updated)
  • Generating doesn't consider season_partitions

Feature: Results Report

Publish

  • Web (direct push of client/server to hoster)
  • Snap
  • Windows Store
  • Android Play Store (fastlane?)
  • iOS App Store (fastlane?)

Action history of user

To be able to revert changes etc.

  • For now we could do auto backup on the server, e.g. after every bout

Refactor Terms

  • Fight to Bout
  • Round to Period (this was already the case)
  • Round describes the round of a tournament, e.g. Qualification rounds, Elimination rounds, Repechage rounds, Finals
  • Tournament to Competition Einzelturnier, team competition is Mannschaftsturnier, team_match does not really have an alternative
  • Participant to Athlete

See https://github.com/Oberhauser-Dev/wrestling_scoreboard/tree/main/wrestling_scoreboard_client/docs/wrestling_rules for more terms

Source: https://uww.org/sites/default/files/media/document/wrestling_rules_1.pdf

Implement Competition / Tournament mode

Tournament schedule naming convention

  • Level 0: Fight order / Kampffolge → How the encounters are ordered within a tournament (day)
  • Level 1: Cycle Z / Zyklus Z → General iteration number of the tournament
  • Level 2: Age Group A / Altersklasse A
  • Level 3: Weight Class W / Gewichtsklasse W
  • Level 4: Round R / Runde R → Specific iteration number of the age group / weight class combination
  • Level 5: Fight No. X / Kampf-Nr. X → Unique increment value

Example:

Kampffolge:
[...]
Zyklus 2
  B-Jugend - 130 kg - Runde 1
    Kampf-Nr. 54: Max Mustermann vs. Peter Pan
  E-Jugend - 21 kg - Runde 2
    Kampf-Nr. 55: Mustafa Jacobson vs. David Goliath
[...]

In this scenario, B-Jugend - 130 kg did skip the first cycle and had their first round during cycle 2. E-Jugend - 21 kg had their second round during the second cycle, so they are bit ahead.

Timestamps

Required UTC timestamps to be able to reliably track errors, stuck encounters or slow progression.

  • Call Time / Aufrufzeit → When was the fight assigned to a mat
  • Start Time / Startzeit → When was the timer started
  • Finish Time / Abschlusszeit → When was the result confirmed or signed

Printing Status

Kinds of printing status per Age Group - Weight Class

  • Call Checklist ( Announcer Table)
    • Has the fight been called, has the fight template been delivered to the table, has it been brought back
    • Not needed when the announcer works digitally
  • Competition List (Fighter / Trainer Area)
    • How are the current standings per class
    • Not needed when all classes have digital displays or the results are live and online available
  • Fight Templates (Referee Table)
    • Paper for tracking the individual fight progress. Points, fight duration, etc
    • Not needed when the table works digitally
  • Certificate / Urkunde: When the class has finished, track whether or not a certificate has been printed

Whenever a new result comes in and/or a new round is paired, update the printing status for each kind whether or not a new version needs to be printed

  • Round 0: Even before the first result comes in, we need a printout so that the participants know who they fight.
  • Round N: Even after the last result came in, update the printouts so that everyone knows who won. Even if people have the tendency to rip off those papers and keep them rather than taking a photo... Put behind glass.
  • Every incoming result would put require a reprint, so don't ask for new printouts until all fights of a class round have been received and the next round has been paired (if possible or necessary)

Time estimates / Tournament length prediction

  • Rough total estimate
    • There might a good simple polynomial function for estimating how many fight are necessary depending on the class size M
    • E.g. (M-1)(M) / 2 in Round-Robin
  • Detailed time planning
  • When you plan the class sequence in detail for each cycle, you will usually only know about deterministic class rounds. Eg. Round-Robin (<= 6 members) or only the first two rounds in Double Elimination Pool System (>6 members). For Double Elemenation Pool System it would be necessary to introduce P placeholder rounds, where P is the maximum round number until it is guaranteed that only 3 members are left per pool (upper bound of P is Round-Robin).
  • Double Elimination Pool System: Also add one more round for finals or two more rounds for cross-over finals.

Passivity Logic

Freistil

  • bei Ablauf der Aktivitätszeit ein Punkt für Gegner (P1, soll das P geschrieben werden, wenn ja, davor oder danach?)
  • wenn passiver Ringer Punkt macht, dann Aktivitätszeit beenden

Griechisch:

  • Passivität gibt gleich 1 Punkt (P1)

  • Dritte Passivität kein Punkt mehr (egal welcher Ringer), nur P

  • d.h. keine Aktivitätzeit in Griechisch-Römisch möglich

  • may add option to disable auto (smart) points in settings

  • Who wins a bout proposal, z.B. TÜ

League should not be a single property of a team

A team must be able to be part of multiple leagues rather a single one (n:n relationship).

There might be multiple leagues happening at once and a new season should not invalidate present data.

E.g. FC Bayern I (first team) might be part of Champions League 2022, Champions League 2023, 1. Bundesliga 2023 and 2. Bundesliga 2024.

Consequences:

  • The assignment of a league in the team edit panel is not really needed. If the functionality shall remain, the assignment needs to be dedicated modifiable list rather than a drop-down.

Misaligned member edit page entries

Last name is shifted to the left compared to the first name because it is missing an icon.

Gender is shifted the right because it is a drop down menu.

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.