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

Réglages affichage def Wiktionnaire

parent a5c94654
No related branches found
No related tags found
1 merge request!4Définitions (lexiques de l'utilisateur + Wiktionnaire)
......@@ -204,17 +204,50 @@ async function getDefinition(selectedText) {
// Fonction pour rechercher une définition sur le Wiktionnaire
async function getDefinitionWiki(selectedText) {
try {
const result = await fetch(`https://fr.wiktionary.org/wiki/${encodeURIComponent(selectedText)}`);
if (result.ok) {
console.log(`🌐 Définition trouvée pour "${selectedText}". Consultez le Wiktionnaire.`);
} else {
alert(`❌ Aucune définition trouvée sur le Wiktionnaire pour "${selectedText}".`);
console.log(`🌐 Recherche sur le Wiktionnaire pour '${selectedText}'...`);
if (!selectedText || selectedText.trim() === "") {
console.warn("⚠️ Aucun texte sélectionné.");
return;
}
const wiktionaryURL = `https://fr.wiktionary.org/w/api.php?action=query&format=json&origin=*&prop=extracts&explaintext=true&redirects=1&titles=${encodeURIComponent(selectedText)}`;
const response = await fetch(wiktionaryURL);
if (!response.ok) {
console.error(`❌ Erreur API Wiktionnaire: ${response.statusText}`);
alert(`❌ Aucune définition trouvée pour "${selectedText}" sur le Wiktionnaire.`);
return;
}
const data = await response.json();
if (!data.query || !data.query.pages) {
alert(`❌ Aucune définition trouvée pour "${selectedText}" sur le Wiktionnaire.`);
return;
}
const pages = Object.values(data.query.pages);
if (pages.length === 0 || !pages[0].extract) {
alert(`❌ Aucune définition trouvée pour "${selectedText}" sur le Wiktionnaire.`);
return;
}
const cleanText = pages[0].extract.trim();
console.log(`✅ Définition trouvée : ${cleanText}`);
// Envoyer la définition au script de la barre latérale
browser.runtime.sendMessage({
action: "fetchWiktionaryDefinitionResponse",
selectedText,
definitions: [{ source: "Wiktionnaire", text: cleanText }],
});
} catch (error) {
console.error("❌ Erreur lors de la recherche sur le Wiktionnaire :", error);
}
}
// Fonction pour extraire les définitions d'une réponse API
function extractDefinitions(response) {
if (!response || !response.attributes || !response.attributes.Items) {
......
......@@ -103,10 +103,10 @@
background-color: #ccc;
margin-right: 10px;
flex-shrink: 0;
}
}
/* Définition */
#definition {
#definitionContainer {
margin-top: 10px;
background-color: #444;
padding: 10px;
......@@ -114,6 +114,14 @@
color: white;
}
#definitionsList li {
margin-bottom: 10px;
}
.definition-source {
font-weight: bold;
color: #ffa500;
}
/* Activer/désactiver le surlignage */
#highlighting-options p {
......@@ -155,13 +163,21 @@
</div>
<!-- Définition affichée -->
<div id="definitionContainer">
<h3>Définitions</h3>
<ul id="definitionsList"></ul>
<div id="definitionContainer">
<h3>Définitions</h3>
<!-- Définitions des lexiques de l'utilisateur -->
<div id="mesLexiquesContainer">
<h4>📚 Mes lexiques</h4>
<ul id="mesLexiquesList"></ul>
</div>
<div id="notificationContainer" style="display: none; padding: 10px; background: #ffeb3b; color: #000; border-radius: 5px;">
<!-- Définitions issues du Wiktionnaire -->
<div id="wiktionnaireContainer">
<h4>🌍 Wiktionnaire</h4>
<ul id="wiktionnaireList"></ul>
</div>
</div>
</body>
</html>
......@@ -299,15 +299,12 @@ async function fetchWiktionaryDefinition(word) {
const cleanText = pages[0].extract.trim();
console.log("✅ Définition extraite :", cleanText);
return [cleanText];
} catch (error) {
console.error(
"❌ Erreur lors de la récupération de la définition du Wiktionnaire :",
error
);
return ["⚠️ Aucune définition disponible."];
}
// Retourner sous le format [{ source: "Wiktionnaire", text: "définition" }]
return [{ source: "Wiktionnaire", text: cleanText }];
} catch (error) {
console.error("❌ Erreur lors de la récupération de la définition du Wiktionnaire :", error);
return [];
}
}
/**
......@@ -315,57 +312,56 @@ async function fetchWiktionaryDefinition(word) {
* et un bouton "Afficher la suite" si le texte est trop long.
*/
function displayDefinitions(definitions) {
const definitionsList = document.getElementById("definitionsList");
if (!definitionsList) {
console.warn("❌ Élément #definitionsList introuvable dans le DOM !");
console.log("📖 Tentative d'affichage des définitions, données reçues :", definitions);
if (!Array.isArray(definitions)) {
console.error("❌ Structure de définition incorrecte, attendu un tableau !");
return;
}
// Rendre visible si c’était caché
definitionsList.style.display = "block";
// Vider le conteneur avant d’ajouter du contenu
definitionsList.innerHTML = "";
const mesLexiquesList = document.getElementById("mesLexiquesList");
const wiktionnaireList = document.getElementById("wiktionnaireList");
const mesLexiquesContainer = document.getElementById("mesLexiquesContainer");
const wiktionnaireContainer = document.getElementById("wiktionnaireContainer");
if (!definitions || definitions.length === 0) {
definitionsList.innerHTML = "<li>⚠️ Aucune définition trouvée.</li>";
if (!mesLexiquesList || !wiktionnaireList) {
console.warn("❌ Impossible de trouver les conteneurs de définitions !");
return;
}
// Parcours de chaque définition
definitions.forEach((def) => {
const li = document.createElement("li");
mesLexiquesList.innerHTML = "";
wiktionnaireList.innerHTML = "";
let hasLexiconDefinitions = false;
let hasWiktionaryDefinitions = false;
// Tronquer à 300 caractères
let truncated = def;
const maxLength = 300;
if (def.length > maxLength) {
truncated = def.slice(0, maxLength) + "...";
definitions.forEach(({ source, text }) => {
if (!source || !text) {
console.warn("⚠️ Structure incorrecte détectée pour une définition :", { source, text });
return;
}
const li = document.createElement("li");
li.textContent = text;
if (source === "Lexiques") {
mesLexiquesList.appendChild(li);
hasLexiconDefinitions = true;
} else if (source === "Wiktionnaire") {
wiktionnaireList.appendChild(li);
hasWiktionaryDefinitions = true;
}
});
// Affichage brut dans un <pre> pour garder les sauts de ligne
const pre = document.createElement("pre");
pre.style.whiteSpace = "pre-wrap";
pre.textContent = truncated;
mesLexiquesContainer.style.display = hasLexiconDefinitions ? "block" : "none";
wiktionnaireContainer.style.display = hasWiktionaryDefinitions ? "block" : "none";
li.appendChild(pre);
console.log(`📚 Mes lexiques affichés: ${hasLexiconDefinitions}`);
console.log(`🌍 Wiktionnaire affiché: ${hasWiktionaryDefinitions}`);
}
// S’il y a un tronquage, on ajoute le bouton "Afficher la suite"
if (def.length > maxLength) {
const readMoreBtn = document.createElement("button");
readMoreBtn.textContent = "Afficher la suite";
readMoreBtn.addEventListener("click", () => {
pre.textContent = def; // On remplace par la définition complète
readMoreBtn.remove(); // On retire le bouton
});
// Petite séparation
li.appendChild(document.createElement("br"));
li.appendChild(readMoreBtn);
}
definitionsList.appendChild(li);
});
}
/**
......@@ -375,13 +371,16 @@ function displayDefinitions(definitions) {
async function showDefinitions(word) {
console.log(`📖 Recherche des définitions pour '${word}'...`);
// Récupère définitions du lexique
const lexiconDefinitions = await fetchLexiconDefinitions(word);
// Récupère définitions des lexiques (sera vide pour l'instant)
const lexiconDefinitions = []; // À remplacer avec une vraie requête API plus tard
// Récupère définitions du Wiktionnaire
const wiktionaryDefinitions = await fetchWiktionaryDefinition(word);
// Fusion des résultats et affichage
const allDefinitions = [...lexiconDefinitions, ...wiktionaryDefinitions];
console.log("📚 Définitions combinées :", allDefinitions);
displayDefinitions(allDefinitions);
}
......@@ -479,29 +478,21 @@ document.addEventListener("DOMContentLoaded", async () => {
}
console.log("✅ Bouton #chercherDef détecté dans le DOM.");
// Forcer l'activation du bouton
chercherDefButton.style.pointerEvents = "auto";
chercherDefButton.style.display = "block";
chercherDefButton.style.visibility = "visible";
chercherDefButton.disabled = false;
chercherDefButton.addEventListener("click", () => {
const selectedWord = document
.getElementById("motSelectionne")
?.textContent?.trim();
chercherDefButton.addEventListener("click", async () => {
const selectedWord = document.getElementById("motSelectionne")?.textContent?.trim();
console.log("📖 Mot sélectionné :", selectedWord);
if (selectedWord && selectedWord !== "Aucun mot sélectionné") {
console.log(
`📩 Envoi du message 'getDefinitionWiki' pour '${selectedWord}'`
);
browser.runtime.sendMessage({
action: "getDefinitionWiki",
selectedText: selectedWord,
});
console.log(`📩 Recherche des définitions pour '${selectedWord}'`);
await showDefinitions(selectedWord);
} else {
console.warn("⚠️ Aucun mot sélectionné pour la recherche.");
}
});
});
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