From bc4dbb532fd70b2c5d9c2f9eae9d0ff6a76b9d22 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Fri, 2 Jan 2026 15:13:41 +0100 Subject: [PATCH 1/3] fix: remove extra log on recalculateMatch --- src/main/java/fr/titionfire/ffsaf/ws/recv/RMatch.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/ws/recv/RMatch.java b/src/main/java/fr/titionfire/ffsaf/ws/recv/RMatch.java index c96b8ba..a28ac3e 100644 --- a/src/main/java/fr/titionfire/ffsaf/ws/recv/RMatch.java +++ b/src/main/java/fr/titionfire/ffsaf/ws/recv/RMatch.java @@ -292,30 +292,24 @@ public class RMatch { if (!o.getCompet().getUuid().equals(connection.pathParam("uuid"))) throw new DForbiddenException("Permission denied"); })) - .invoke(m -> System.out.println("A00")) .call(cm -> data.matchesToRemove.isEmpty() ? Uni.createFrom().voidItem() : (Panache.withTransaction( () -> matchRepository.delete("id IN ?1 AND category = ?2", data.matchesToRemove, cm)) .call(__ -> SSMatch.sendDeleteMatch(connection, data.matchesToRemove)))) - .invoke(m -> System.out.println("A0")) .call(cm -> Panache.withSession(() -> matchRepository.list("id IN ?1 AND category = ?2", Stream.concat(data.matchOrderToUpdate.keySet().stream(), data.matchPouleToUpdate.keySet().stream()) .distinct().toList(), cm) - .invoke(m -> System.out.println("A " + m.size())) .invoke(matchModels -> matchModels.forEach(model -> { if (data.matchPouleToUpdate.containsKey(model.getId())) model.setPoule(data.matchPouleToUpdate.get(model.getId())); if (data.matchOrderToUpdate.containsKey(model.getId())) model.setCategory_ord(data.matchOrderToUpdate.get(model.getId())); })) - .invoke(m -> System.out.println("B " + m.size())) .call(mm -> mm.isEmpty() ? Uni.createFrom().voidItem() : Panache.withTransaction(() -> matchRepository.persist(mm))) - .invoke(m -> System.out.println("C")) .invoke(mm -> matches.addAll(mm.stream().map(MatchEntity::fromModel).toList()))) ) - .invoke(m -> System.out.println("D")) .chain(categoryModel -> { Uni> uni = Uni.createFrom().item(new ArrayList<>()); for (AddMatch match : data.newMatch) @@ -324,11 +318,9 @@ public class RMatch { return Panache.withSession(() -> finalUni); } ) - .invoke(m -> System.out.println("E")) .chain(mm -> mm.isEmpty() ? Uni.createFrom().voidItem() : Panache.withTransaction(() -> matchRepository.create(mm)) .invoke(__ -> matches.addAll(mm.stream().map(MatchEntity::fromModel).toList()))) - .invoke(m -> System.out.println("F")) .call(__ -> SSMatch.sendMatch(connection, matches)) .replaceWithVoid(); } From 6a7af8aea948b59ec59d66baf0bcdd1404f74322 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Fri, 2 Jan 2026 15:33:56 +0100 Subject: [PATCH 2/3] fix: tree order on result api --- .../ffsaf/domain/service/ResultService.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java index f1407a6..934322d 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/ResultService.java @@ -229,11 +229,14 @@ public class ResultService { private void getTree(List treeModels, MembreModel membreModel, ResultCategoryData out) { ArrayList> trees = new ArrayList<>(); - treeModels.stream().filter(t -> t.getLevel() != 0).forEach(treeModel -> { - TreeNode root = new TreeNode<>(); - convertTree(treeModel, root, membreModel, ResultPrivacy.REGISTERED_ONLY_NO_DETAILS); - trees.add(root); - }); + treeModels.stream() + .filter(t -> t.getLevel() != 0) + .sorted(Comparator.comparing(TreeModel::getLevel)) + .forEach(treeModel -> { + TreeNode root = new TreeNode<>(); + convertTree(treeModel, root, membreModel, ResultPrivacy.REGISTERED_ONLY_NO_DETAILS); + trees.add(root); + }); out.setTrees(trees); } From b54eaa2549bbedee49cc1e72c8c77f91835daa11 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Fri, 2 Jan 2026 15:58:59 +0100 Subject: [PATCH 3/3] fix: remove case sensitive sort result --- src/main/webapp/public/competition.js | 10 +++++----- src/main/webapp/src/pages/result/ResultView.jsx | 15 +++++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/webapp/public/competition.js b/src/main/webapp/public/competition.js index 53ddd7b..c8e7352 100644 --- a/src/main/webapp/public/competition.js +++ b/src/main/webapp/public/competition.js @@ -46,7 +46,7 @@ function homePage() { let content = document.createElement('div'); content.innerHTML = `
    -
  • Par poule
  • +
  • Par catégorie
  • Par combattant
  • Par club
  • Tous les combattants
  • @@ -258,7 +258,7 @@ function poulePage(location) { rootDiv.innerHTML = header + backButton; const content = document.createElement('div'); content.style.marginTop = '1em'; - content.innerHTML = '

    Recherche par poule

    '; + content.innerHTML = '

    Recherche par catégorie

    '; const dataContainer = document.createElement('div'); dataContainer.id = 'data-container'; @@ -334,8 +334,8 @@ function poulePage(location) { .then(poule => { const select = document.createElement('select'); select.setAttribute('id', poule.id); - select.innerHTML = ``; - for (const pouleKey of Object.keys(poule).sort()) { + select.innerHTML = ``; + for (const pouleKey of Object.keys(poule).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()))) { select.innerHTML += ``; } select.addEventListener('change', e => { @@ -356,7 +356,7 @@ function poulePage(location) { loadPoule(); } }) - .catch(() => rootDiv.append(new Text("Erreur de chargement des poules"))) + .catch(() => rootDiv.append(new Text("Erreur de chargement des catégories"))) .finally(() => stopLoading(loading)); rfFonction = () => { diff --git a/src/main/webapp/src/pages/result/ResultView.jsx b/src/main/webapp/src/pages/result/ResultView.jsx index 7f06393..c17c07e 100644 --- a/src/main/webapp/src/pages/result/ResultView.jsx +++ b/src/main/webapp/src/pages/result/ResultView.jsx @@ -150,14 +150,15 @@ function CategoryList({uuid}) { useEffect(() => { if (data && Object.keys(data).length > 0) - setCatId(data[Object.keys(data).sort()[0]]) + setCatId(data[Object.keys(data).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()))[0]]) }, [data]); return <> {data ?
    Catégorie
    : error @@ -224,14 +225,15 @@ function ClubList({uuid}) { useEffect(() => { if (data && Object.keys(data).length > 0) - setClubId(data[Object.keys(data).sort()[0]]) + setClubId(data[Object.keys(data).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()))[0]]) }, [data]); return <> {data ?
    Club
    : error @@ -310,14 +312,15 @@ function CombList({uuid}) { useEffect(() => { if (data && Object.keys(data).length > 0) - setCombId(data[Object.keys(data).sort()[0]]) + setCombId(data[Object.keys(data).sort((a, b) => a.toLocaleLowerCase().localeCompare(b.toLocaleLowerCase()))[0]]) }, [data]); return <> {data ?
    Combattant
    : error