From 797ac17b74584894c1568171ed4471b51001fb85 Mon Sep 17 00:00:00 2001 From: Claude Brisson Date: Wed, 27 Dec 2023 11:51:51 +0100 Subject: [PATCH] Select all in lists for pair/unpair; allow results changes in previous rounds --- .../main/kotlin/org/jeudego/pairgoth/api/PairingHandler.kt | 1 + .../main/kotlin/org/jeudego/pairgoth/api/ResultsHandler.kt | 1 - view-webapp/src/main/webapp/js/tour-pairing.inc.js | 7 +++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/PairingHandler.kt b/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/PairingHandler.kt index e48faab..42ebdfd 100644 --- a/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/PairingHandler.kt +++ b/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/PairingHandler.kt @@ -35,6 +35,7 @@ object PairingHandler: PairgothApiHandler { val round = getSubSelector(request)?.toIntOrNull() ?: badRequest("invalid round number") if (round > tournament.lastRound() + 1) badRequest("invalid round: previous round has not been played") val payload = getArrayPayload(request) + if (payload.isEmpty()) badRequest("nobody to pair") val allPlayers = payload.size == 1 && payload[0] == "all" //if (!allPlayers && tournament.pairing.type == PairingType.SWISS) badRequest("Swiss pairing requires all pairable players") val playing = (tournament.games(round).values).flatMap { diff --git a/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/ResultsHandler.kt b/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/ResultsHandler.kt index 135647f..372fdc6 100644 --- a/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/ResultsHandler.kt +++ b/api-webapp/src/main/kotlin/org/jeudego/pairgoth/api/ResultsHandler.kt @@ -21,7 +21,6 @@ object ResultsHandler: PairgothApiHandler { override fun put(request: HttpServletRequest): Json { val tournament = getTournament(request) val round = getSubSelector(request)?.toIntOrNull() ?: badRequest("invalid round number") - if (round != tournament.lastRound()) badRequest("cannot enter results in other rounds but the last") val payload = getObjectPayload(request) val game = tournament.games(round)[payload.getInt("id")] ?: badRequest("invalid game id") game.result = Game.Result.fromSymbol(payload.getChar("result") ?: badRequest("missing result")) diff --git a/view-webapp/src/main/webapp/js/tour-pairing.inc.js b/view-webapp/src/main/webapp/js/tour-pairing.inc.js index 7ea71d1..99b8988 100644 --- a/view-webapp/src/main/webapp/js/tour-pairing.inc.js +++ b/view-webapp/src/main/webapp/js/tour-pairing.inc.js @@ -42,10 +42,17 @@ onLoad(()=>{ }); $('#pair').on('click', e => { let parts = $('#pairables')[0].childNodes.filter('.selected.listitem').map(item => parseInt(item.data("id"))); + if (parts.length == 0) { + $('#pairables .listitem').addClass('selected'); + parts = $('#pairables')[0].childNodes.filter('.selected.listitem').map(item => parseInt(item.data("id"))); + } pair(parts); }); $('#unpair').on('click', e => { let games = $('#paired')[0].childNodes.filter('.selected.listitem').map(item => parseInt(item.data("id"))); + if (games.length == 0) { + games = $('#paired')[0].childNodes.filter('.selected.listitem').map(item => parseInt(item.data("id"))); + } unpair(games); }); });