denki / openttt Goto Github PK
View Code? Open in Web Editor NEWSoftware for managing table tennis tournaments.
License: BSD 3-Clause "New" or "Revised" License
Software for managing table tennis tournaments.
License: BSD 3-Clause "New" or "Revised" License
-1: in a 3 and 4 group qualification round: in the 3-players groups are the progress bars field to the half even when all matches in the groups are played (3/3 -> 50%)
-2: if there are more different groupsizes (e.g. 2,3,4,5,6,7,8,9,10) the progress bar is filled after the first match of each group
if u write something in the search column the filter works, but if u press the cross-button after, the input is clear, but the filter is still activated and the list is not refreshed.
if u press some other buttons, the list is refreshed.
even if matches are played, the whole KO-System is deleted
do u wanna disable the delete button for groups, when there is just 1 group
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at database.players.Double.getFullName(Double.java:92)
at gui.components.PlayerListRenderer.getListCellRendererComponent(PlayerListRenderer.java:24)
at gui.components.PlayerListRenderer.getListCellRendererComponent(PlayerListRenderer.java:14)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1360)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1310)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:577)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1651)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:790)
at java.awt.Container.layout(Container.java:1503)
at java.awt.Container.doLayout(Container.java:1492)
at java.awt.Container.validateTree(Container.java:1688)
at java.awt.Container.validate(Container.java:1623)
at javax.swing.RepaintManager$2.run(RepaintManager.java:691)
at javax.swing.RepaintManager$2.run(RepaintManager.java:689)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:688)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1676)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1911)
at database.players.Double.getFullName(Double.java:92)
at gui.components.PlayerListRenderer.getListCellRendererComponent(PlayerListRenderer.java:24)
at gui.components.PlayerListRenderer.getListCellRendererComponent(PlayerListRenderer.java:14)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1360)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1310)
at javax.swing.plaf.basic.BasicListUI.paintImpl(BasicListUI.java:263)
at javax.swing.plaf.basic.BasicListUI.paint(BasicListUI.java:239)
at javax.swing.plaf.synth.SynthListUI.update(SynthListUI.java:79)
at javax.swing.JComponent.paintComponent(JComponent.java:769)
at javax.swing.JComponent.paint(JComponent.java:1045)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JViewport.paint(JViewport.java:731)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:878)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
at javax.swing.JComponent.paint(JComponent.java:1031)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1967)
at java.awt.Window.paint(Window.java:3877)
at javax.swing.RepaintManager$3.run(RepaintManager.java:819)
at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
at least for Double
if u reset a done match in the KO-tree, all following matches of this match are not reset.
e.g.: if u have 4 players in the KO-tree, end all 3 matches and after that reset one of the first 2 matches the 3rd match is still shown.
all following matches of a reset match should also be reset
i would show a possible template in the template-list but not assigned in the east of the window.
so that the template could be chosen.
at the moment no template is shown in the template list.
If the template is just shown in the template-list but not selected, the user can choose between using the prepared template and making his own KO-tree.
using the plus-button in the import-players-window throws the following exception, when u wanna import out of an .ods-file:
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.substring(String.java:1907)
at database.players.Person.(Person.java:39)
at database.players.Single.(Single.java:37)
at gui.popups.ImportPlayers.accept(ImportPlayers.java:156)
at gui.popups.ImportPlayers$2.actionPerformed(ImportPlayers.java:91)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
if the ko-tree is bigger than the window and the scrollbar is used the ko-tree produces stripes and there is hardly anything recognizable
it is in the horizontal and vertical direction
the save-button doesn't work in any window
if you start a new tournament, choose double with ko and you go on import from file, the open window is shown and after you click the open button the open window closes and the program freezes without any exception
it should be possible to somehow peek into the KO from the qualifying view
KO matches should carry a priority, the priority should lower from west to east and north to south.
the maximize mode of the viewer doesn't work with 31 groups and more, the viewer disappeared when you pressed the maximize button and is shown when you close the main-program
sometimes a check in the present column is randomly deleted, if a greater amount of checks are set in order
There should be a general solution for templates. Even though templates should be supported in order to prepare tournaments, there should be a generic solution for the default case.
Show the next games in a Box in the KO watcher, maybe also show some statistical data: avg time per game, est. time until start for next games, avg. games per hour, avg. tables, ...
Print all error messages to STDERR to meet the standard.
Make the two JLists Drag & Drop capable
1-player groups are enabled - it might make sense to disabled that
the ko matches are in a random order not from top to bottom of the tree
The program should handle a list of occupied Persons regardless of whether they are occupied by a single/double/team match.
it might look better if the ko-tree is scaled with the window-size
the search in the presence window shows results even when there is a pointless input -> shouldn't be
should be like before, that the tournament could not be started, when not all players are present
expected: KO remembers games
behaviour: KO forgets all games
the ko-tree is not shown in the HTML file
When changing the size of groups after qualifying already started, the priority of matches remains unchanged, it should increase (for growing groups) or decrese (for shrinking groups).
in the start window not everything is shown, if the window is too small (there is no scroll bar)
i would suggest a clear-button in the search of the presence window, like the search in players view
In QualifyingPreview and KnockOutPreview show a list of upcoming games.
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.