From b0a095fed0e389bf740a167a17b6f1c53bd3feab Mon Sep 17 00:00:00 2001 From: Claude Brisson Date: Thu, 21 Dec 2023 13:08:59 +0100 Subject: [PATCH] Pairing still in progress --- .../org/jeudego/pairgoth/api/PairingHandler.kt | 2 +- view-webapp/src/main/webapp/js/domhelper.js | 4 ++-- .../src/main/webapp/js/tour-pairing.inc.js | 16 +++++++++++++++- .../src/main/webapp/js/tour-registration.inc.js | 1 - .../src/main/webapp/tour-pairing.inc.html | 2 +- 5 files changed, 19 insertions(+), 6 deletions(-) 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 f745c8e..e0f6ea6 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 @@ -20,7 +20,7 @@ object PairingHandler: PairgothApiHandler { val playing = tournament.games(round).values.flatMap { listOf(it.black, it.white) }.toSet() - return tournament.pairables.values.filter { !it.skip.contains(round) && !playing.contains(it.id) }.map { it.id }.toJsonArray() + return tournament.pairables.values.filter { !it.skip.contains(round) && !playing.contains(it.id) }.sortedByDescending { it.rating }.map { it.id }.toJsonArray() } override fun post(request: HttpServletRequest): Json { diff --git a/view-webapp/src/main/webapp/js/domhelper.js b/view-webapp/src/main/webapp/js/domhelper.js index 7c392c0..a3e5807 100644 --- a/view-webapp/src/main/webapp/js/domhelper.js +++ b/view-webapp/src/main/webapp/js/domhelper.js @@ -68,7 +68,7 @@ NodeList.prototype.offset = function() { } Element.prototype.attr = function (key, value) { if (typeof(value) === 'undefined') { - return this.attributes[key].value; + return this.attributes[key]?.value; } else { this.setAttribute(key, value); return this; @@ -86,7 +86,7 @@ NodeList.prototype.attr = function(key, value) { } Element.prototype.data = function (key, value) { if (typeof(value) === 'undefined') { - return this.attributes[`data-${key}`].value + return this.attributes[`data-${key}`]?.value } else { this.setAttribute(`data-${key}`, value); return this; 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 1abaf96..03a28be 100644 --- a/view-webapp/src/main/webapp/js/tour-pairing.inc.js +++ b/view-webapp/src/main/webapp/js/tour-pairing.inc.js @@ -1,5 +1,14 @@ let focused = undefined; +function pair(parts) { + api.postJson(`tour/${tour_id}/pair/${activeRound}`, parts) + .then(rst => { + if (rst !== 'error') { + document.location.reload(); + } + }); +} + onLoad(()=>{ $('.listitem').on('click', e => { if (e.shiftKey && typeof(focused) !== 'undefined') { @@ -17,7 +26,12 @@ onLoad(()=>{ children.item(j).attr('draggable', true); } } else { - focused = e.target.closest('.listitem').toggleClass('selected').attr('draggable', true); + let target = e.target.closest('.listitem'); + focused = target.toggleClass('selected').attr('draggable', target.hasClass('selected')); } }); + $('#pair').on('click', e => { + let parts = $('#pairables')[0].childNodes.filter('.selected.listitem').map(item => parseInt(item.data("id"))); + pair(parts); + }); }); diff --git a/view-webapp/src/main/webapp/js/tour-registration.inc.js b/view-webapp/src/main/webapp/js/tour-registration.inc.js index d949745..bd840df 100644 --- a/view-webapp/src/main/webapp/js/tour-registration.inc.js +++ b/view-webapp/src/main/webapp/js/tour-registration.inc.js @@ -135,7 +135,6 @@ onLoad(() => { skip: form.find('input.participation').map((input,i) => [i+1, input.checked]).filter(arr => !arr[1]).map(arr => arr[0]) } if (form.hasClass('add')) { - ("ADDING") api.postJson(`tour/${tour_id}/part`, player) .then(player => { if (player !== 'error') { diff --git a/view-webapp/src/main/webapp/tour-pairing.inc.html b/view-webapp/src/main/webapp/tour-pairing.inc.html index 27b5002..59ba431 100644 --- a/view-webapp/src/main/webapp/tour-pairing.inc.html +++ b/view-webapp/src/main/webapp/tour-pairing.inc.html @@ -18,7 +18,7 @@ #else #foreach($p in $pairables) #set($part = $pmap[$p]) -
$part.name $part.firstname$part.country #rank($part.rank)
+
$part.name $part.firstname$part.country #rank($part.rank)
#end #end