Skip to content
Snippets Groups Projects
Commit 4f6a18ee authored by Lucie Bader's avatar Lucie Bader
Browse files

Message d'erreur si mot existant dans lexique

parent b3918c92
No related branches found
No related tags found
2 merge requests!8Test final,!5Ajout manuel d'un mot dans un ou plusieurs lexique(s)
......@@ -209,46 +209,66 @@ function displayLexiconsWithCheckbox(lexicons) {
}
lexicons.forEach(({ lexiconName, lexiconId, active }) => {
// Création du conteneur pour ce lexique
const lexiqueDiv = document.createElement("div");
lexiqueDiv.className = "lexique-item";
// Optionnel : un élément visuel (icône)
const iconDiv = document.createElement("div");
iconDiv.className = "lexique-icon";
iconDiv.style.backgroundColor = "#ccc";
// Le label affichant le nom du lexique
const labelSpan = document.createElement("span");
labelSpan.className = "lexique-label";
labelSpan.textContent = lexiconName;
const checkbox = document.createElement("input");
checkbox.type = "checkbox";
checkbox.className = "lexique-checkbox";
checkbox.checked = active;
// On stocke l'ID du lexique dans un attribut data pour le récupérer plus tard
checkbox.dataset.lexiconId = lexiconId;
// Toggle highlight
checkbox.addEventListener("change", async () => {
console.log(
`🔄 Changement de surlignage pour ${lexiconName} (ID: ${lexiconId}): ${
checkbox.checked ? "activé" : "désactivé"
}`
);
// On envoie un message au background script pour gérer le highlight
await browser.runtime.sendMessage({
action: "toggleLexiconHighlight",
lexiconId,
isActive: checkbox.checked,
});
// La case à cocher servant à sélectionner le lexique pour l'ajout d'un mot
const addCheckbox = document.createElement("input");
addCheckbox.type = "checkbox";
addCheckbox.className = "lexique-add-checkbox";
// On stocke l'ID du lexique dans le dataset pour l'utiliser lors de l'ajout
addCheckbox.dataset.lexiconId = lexiconId;
// Le bouton pour activer/désactiver le surlignage
const highlightButton = document.createElement("button");
highlightButton.className = "lexique-highlight-toggle";
highlightButton.dataset.lexiconId = lexiconId;
// Stocke l'état initial dans le dataset ("true" si actif, sinon "false")
highlightButton.dataset.active = active ? "true" : "false";
// Définition du texte du bouton en fonction de l'état initial
highlightButton.textContent = active ? "Désactiver surlignage" : "Activer surlignage";
// Gestion du clic sur le bouton de surlignage
highlightButton.addEventListener("click", async () => {
// On récupère l'état courant depuis le dataset
let currentState = highlightButton.dataset.active === "true";
let newState = !currentState;
try {
// Envoi d'un message pour demander au background de changer l'état de surlignage
await browser.runtime.sendMessage({
action: "toggleLexiconHighlight",
lexiconId,
isActive: newState,
});
// Mise à jour de l'état stocké et du texte du bouton
highlightButton.dataset.active = newState ? "true" : "false";
highlightButton.textContent = newState ? "Désactiver surlignage" : "Activer surlignage";
} catch (error) {
console.error("Erreur lors du toggle de surlignage pour le lexique", lexiconId, ":", error);
}
});
// Assemblage de l'élément du lexique
lexiqueDiv.appendChild(iconDiv);
lexiqueDiv.appendChild(labelSpan);
lexiqueDiv.appendChild(checkbox);
lexiqueDiv.appendChild(addCheckbox);
lexiqueDiv.appendChild(highlightButton);
lexiquesContainer.appendChild(lexiqueDiv);
});
}
function initModal() {
console.log("initModal appelé");
const modalOverlay = document.getElementById("modalOverlay");
......@@ -313,7 +333,7 @@ async function handleAddWordClick() {
}
// On récupère toutes les checkboxes cochées dans #lexiques
const checkboxList = document.querySelectorAll("#lexiques .lexique-checkbox:checked");
const checkboxList = document.querySelectorAll("#lexiques .lexique-add-checkbox:checked");
const selectedLexiconIds = Array.from(checkboxList).map((cb) =>
parseInt(cb.dataset.lexiconId, 10)
);
......@@ -326,16 +346,41 @@ async function handleAddWordClick() {
return;
}
console.log("📦 Ajout du mot :", selectedWord, "dans lexique(s) :", selectedLexiconIds);
// Appel à la fonction AddWord (définie dans api.js et exposée en window)
// Vérifier si le mot existe déjà dans l'un des lexiques sélectionnés
let definitions = [];
try {
const result = await window.AddWord(authToken, selectedWord, selectedLexiconIds, false);
console.log("✅ Réponse d’ajout :", result);
definitions = await fetchLexiconDefinitions(selectedWord);
} catch (error) {
console.error("Erreur lors de la récupération des définitions pour vérification :", error);
}
let exists = false;
if (definitions && definitions.length > 0) {
for (const def of definitions) {
if (selectedLexiconIds.includes(def.lexiconId)) {
exists = true;
break;
}
}
}
if (exists) {
if (lexiconResultElement) {
lexiconResultElement.innerHTML =
"Le mot <strong>" + selectedWord + "</strong> existe déjà dans le(s) lexique(s) : " + selectedLexiconIds.join(", ") + ".";
}
return;
}
// Procéder à l'ajout dans chaque lexique sélectionné
try {
for (const lexId of selectedLexiconIds) {
const result = await window.AddWord(authToken, selectedWord, [lexId], false);
console.log("✅ Réponse d’ajout pour le lexique", lexId, ":", result);
}
if (lexiconResultElement) {
lexiconResultElement.textContent = "Mot ajouté avec succès !";
// Si l’API renvoie plus d’infos, vous pouvez les afficher ici
lexiconResultElement.textContent =
"✅ Mot <strong>" + selectedWord + "</strong> ajouté avec succès dans les lexiques : " + selectedLexiconIds.join(", ") + ".";
}
} catch (error) {
console.error("❌ Erreur lors de l’ajout du mot :", error);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment