From c7f3c51308a55ac814ae945e1a788a06cc08958c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20PENHO=C3=8BT?= Date: Tue, 27 Oct 2020 11:30:33 +0100 Subject: [PATCH] =?UTF-8?q?Adaptation=20du=20rang=20par=20d=C3=A9faut=20d'?= =?UTF-8?q?un=20=C3=A9l=C3=A9ment=20de=20groupe=20lorsque=20l'on=20s=C3=A9?= =?UTF-8?q?lectionne=20un=20nouveau=20groupe=20pour=20prendre=20la=20valeu?= =?UTF-8?q?r=20sup=C3=A9rieure=20un=20rang=20le=20plus=20=C3=A9lev=C3=A9?= =?UTF-8?q?=20d=C3=A9j=C3=A0=20enregistr=C3=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/group.js | 3 ++- front/src/manageQuestionnaires.js | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/controllers/group.js b/controllers/group.js index 2f75e21..6b10653 100644 --- a/controllers/group.js +++ b/controllers/group.js @@ -119,6 +119,7 @@ exports.delete = async (req, res, next) => } // Recherche par mots-clés parmis tous les groupes (y compris ceux non publiés). +// Le rank le + élevé des éléments déjà enregistrés dans le groupe permet de placer le nouveau. exports.searchGroups = async (req, res, next) => { try @@ -129,7 +130,7 @@ exports.searchGroups = async (req, res, next) => else { const db = require("../models/index"); - const getGroups=await db.sequelize.query("SELECT `id`,`title` FROM `Groups` WHERE (`title` LIKE :search OR `introduction` LIKE :search) ORDER BY `title` ASC", { replacements: { search: "%"+search+"%" }, type: QueryTypes.SELECT }); + const getGroups=await db.sequelize.query("SELECT `Groups`.`id`,`Groups`.`title`, MAX(`Questionnaires`.`rankInGroup`) as maxRank FROM `Groups` LEFT JOIN `Questionnaires` ON `Questionnaires`.`GroupId` = `Groups`.`id` WHERE `Groups`.`title` LIKE :search OR `Groups`.`introduction` LIKE :search GROUP BY `Groups`.`id` ORDER BY `Groups`.`title` ASC", { replacements: { search: "%"+search+"%" }, type: QueryTypes.SELECT }); res.status(200).json(getGroups); } next(); diff --git a/front/src/manageQuestionnaires.js b/front/src/manageQuestionnaires.js index eb2ec18..18ae4c7 100644 --- a/front/src/manageQuestionnaires.js +++ b/front/src/manageQuestionnaires.js @@ -55,6 +55,7 @@ const helpGroup = document.getElementById("helpGroup"); const helpPublishingAt = document.getElementById("helpPublishingAt"); const inputClassification = document.getElementById("classification"); const inputGroup = document.getElementById("group"); +const inputRankInGroup = document.getElementById("rankInGroup"); // Vide et cache tous les formulaires annexes au questionnaire : const hideAllForms = () => @@ -632,9 +633,12 @@ const initialise = async () => document.getElementById("#group"+response[i].id).addEventListener("click", function(e) { e.preventDefault(); - let groupId=e.target.id.replace("#group", ""); - inputGroup.value=e.target.innerHTML+" ("+groupId+")"; - formQuestionnaire["GroupId"].value=groupId; + inputGroup.value=response[i].title+" ("+response[i].id+")"; + formQuestionnaire["GroupId"].value=response[i].id; + if(!isEmpty(response[i].maxRank)) + inputRankInGroup.value=response[i].maxRank+1; + else + inputRankInGroup.value=1; helpGroup.innerHTML=""; }); }