From 7dab5b888044f7c28733f6ebb1e72522a443250b Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Thu, 5 Feb 2026 22:32:31 +0100 Subject: [PATCH] fix: tree detection on cat edit --- .../fr/titionfire/ffsaf/ws/recv/RCategorie.java | 13 ++++++++++++- .../src/pages/competition/editor/CMAdmin.jsx | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/ws/recv/RCategorie.java b/src/main/java/fr/titionfire/ffsaf/ws/recv/RCategorie.java index 005dcdb..ff8c81c 100644 --- a/src/main/java/fr/titionfire/ffsaf/ws/recv/RCategorie.java +++ b/src/main/java/fr/titionfire/ffsaf/ws/recv/RCategorie.java @@ -55,6 +55,9 @@ public class RCategorie { @Inject CardRepository cardRepository; + @Inject + CatPresetRepository catPresetRepository; + @Inject ResultService resultService; @@ -124,13 +127,21 @@ public class RCategorie { @WSReceiver(code = "updateCategory", permission = PermLevel.ADMIN) public Uni updateCategory(WebSocketConnection connection, JustCategorie categorie) { return getById(categorie.id, connection) + .call(cat -> { + if (categorie.preset() == null) { + cat.setPreset(null); + return Uni.createFrom().item(cat); + } else { + return catPresetRepository.findById(categorie.preset().getId()) + .invoke(cat::setPreset); + } + }) .chain(cat -> { cat.setName(categorie.name); cat.setLiceName(categorie.liceName); cat.setType(categorie.type); cat.setTreeAreClassement(categorie.treeAreClassement); cat.setFullClassement(categorie.fullClassement); - // cat.setPreset(cat.getPreset()); //TODO preset update return Panache.withTransaction(() -> categoryRepository.persist(cat)); }) .call(cat -> { diff --git a/src/main/webapp/src/pages/competition/editor/CMAdmin.jsx b/src/main/webapp/src/pages/competition/editor/CMAdmin.jsx index 14ed64e..2ba76e1 100644 --- a/src/main/webapp/src/pages/competition/editor/CMAdmin.jsx +++ b/src/main/webapp/src/pages/competition/editor/CMAdmin.jsx @@ -622,7 +622,12 @@ function ModalContent({state, setCatId, setConfirm, confirmRef}) { setClassement(state.treeAreClassement !== undefined && state.treeAreClassement !== false); setFullClassement(state.fullClassement !== undefined && state.fullClassement !== false); - const trees_ = state?.trees ? state.trees.filter(t => t.level > 0) : null; + let trees_ = [] + for (let i = 0; i < state?.raw_trees?.length; i++) { + if (state.raw_trees.at(i).level > 0) { + trees_.push(state.trees.at(i)) + } + } if (trees_ && trees_.length >= 1) { const tree = trees_[0]; setSize(tree.getMaxChildrenAtDepth(tree.death() - 1) * 2); @@ -655,7 +660,12 @@ function ModalContent({state, setCatId, setConfirm, confirmRef}) { return; } - const trees_ = state?.trees ? state.trees.filter(t => t.level > 0) : null; + let trees_ = [] + for (let i = 0; i < state?.raw_trees?.length; i++) { + if (state.raw_trees.at(i).level > 0) { + trees_.push(state.trees.at(i)) + } + } if (state?.id) { const applyChanges = () => { const newData = {