From 503e6e9dac8096978668b7b20b2593f97de683a7 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Thu, 21 Aug 2025 17:04:09 +0200 Subject: [PATCH] =?UTF-8?q?up=20liens=20osmose=20th=C3=A8me=20d=C3=A9tails?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Controller/WikiController.php | 29 +++++++++ .../admin/followup_theme_graph.html.twig | 34 ++++++++++- templates/admin/wiki.html.twig | 59 ++++++++++++++----- 3 files changed, 105 insertions(+), 17 deletions(-) diff --git a/src/Controller/WikiController.php b/src/Controller/WikiController.php index b6c04b3..b753f3a 100644 --- a/src/Controller/WikiController.php +++ b/src/Controller/WikiController.php @@ -25,6 +25,7 @@ class WikiController extends AbstractController $wikiPages = []; $missingTranslations = []; + $pageDifferences = []; // First pass: collect all staleness scores to find min and max $stalenessScores = []; @@ -68,6 +69,33 @@ class WikiController extends AbstractController } } + // Calculate differences between English and French versions + foreach ($wikiPages as $key => $languages) { + if (isset($languages['en']) && isset($languages['fr'])) { + $en = $languages['en']; + $fr = $languages['fr']; + + // Calculate differences (French - English) + $sectionDiff = (int)$fr['sections'] - (int)$en['sections']; + $wordDiff = (int)$fr['word_count'] - (int)$en['word_count']; + $linkDiff = (int)$fr['link_count'] - (int)$en['link_count']; + $mediaDiff = isset($fr['media_count']) && isset($en['media_count']) ? + (int)$fr['media_count'] - (int)$en['media_count'] : 0; + + // Format differences with + or - sign + $pageDifferences[$key] = [ + 'section_diff' => $sectionDiff, + 'section_diff_formatted' => ($sectionDiff >= 0 ? '+' : '') . $sectionDiff, + 'word_diff' => $wordDiff, + 'word_diff_formatted' => ($wordDiff >= 0 ? '+' : '') . $wordDiff, + 'link_diff' => $linkDiff, + 'link_diff_formatted' => ($linkDiff >= 0 ? '+' : '') . $linkDiff, + 'media_diff' => $mediaDiff, + 'media_diff_formatted' => ($mediaDiff >= 0 ? '+' : '') . $mediaDiff, + ]; + } + } + // Sort wiki pages by staleness score (descending) uasort($wikiPages, function($a, $b) { $scoreA = isset($a['en']) && isset($a['fr']) && isset($a['en']['staleness_score']) ? (float)$a['en']['staleness_score'] : 0; @@ -78,6 +106,7 @@ class WikiController extends AbstractController return $this->render('admin/wiki.html.twig', [ 'wiki_pages' => $wikiPages, 'missing_translations' => $missingTranslations, + 'page_differences' => $pageDifferences, ]); } diff --git a/templates/admin/followup_theme_graph.html.twig b/templates/admin/followup_theme_graph.html.twig index 4a3907b..49530fc 100644 --- a/templates/admin/followup_theme_graph.html.twig +++ b/templates/admin/followup_theme_graph.html.twig @@ -14,6 +14,10 @@ padding: 0.5rem; color: white; } + .bg-purple { + background-color: #8A2BE2 !important; + color: white !important; + } #themeMap { margin-top: 1rem; } @@ -881,8 +885,32 @@ const divOsmose = document.querySelector(('#alertes_osmose')) if(divOsmose){ - - divOsmose.innerHTML = `${data.issues.length} objets à ajouter selon Osmose`; + if (data.issues.length === 1) { + // Si un seul objet, rendre tout le texte cliquable + const issueId = data.issues[0].id; + divOsmose.innerHTML = ` + ${data.issues.length} objet à ajouter selon Osmose + `; + } else { + // Si plusieurs objets, lister chaque objet avec son numéro + let content = `${data.issues.length} objets à ajouter selon Osmose : `; + + // Limiter à 5 objets affichés pour éviter de surcharger l'interface + const displayLimit = 5; + const displayCount = Math.min(data.issues.length, displayLimit); + + for (let i = 0; i < displayCount; i++) { + const issueId = data.issues[i].id; + content += `${i}`; + } + + // Indiquer s'il y a plus d'objets que ceux affichés + if (data.issues.length > displayLimit) { + content += `(et ${data.issues.length - displayLimit} autres)`; + } + + divOsmose.innerHTML = content; + } } console.log(`[Osmose] ${data.issues.length} analyses trouvées pour le thème ${theme}`); @@ -895,7 +923,7 @@ .setHTML( (() => { - return `
Proposition d'ajout
` + return `
Proposition d'ajout
` })()); // lapopup.on('open', () => { diff --git a/templates/admin/wiki.html.twig b/templates/admin/wiki.html.twig index 53871e6..e804a3b 100644 --- a/templates/admin/wiki.html.twig +++ b/templates/admin/wiki.html.twig @@ -17,18 +17,15 @@ Clé - Version anglaise - Version française + Différences FR vs EN Score de
décrépitude Liens - Sections - Mots - Liens - Sections - Mots - Liens + Sections + Mots + Liens + Images @@ -39,13 +36,47 @@ {{ key }} - {{ languages['en'].sections }} - {{ languages['en'].word_count }} - {{ languages['en'].link_count }} + {% set diff = page_differences[key] %} - {{ languages['fr'].sections }} - {{ languages['fr'].word_count }} - {{ languages['fr'].link_count }} + + {% if diff.section_diff > 0 %} + {{ diff.section_diff_formatted }} + {% elseif diff.section_diff < 0 %} + {{ diff.section_diff_formatted }} + {% else %} + 0 + {% endif %} + + + + {% if diff.word_diff > 0 %} + {{ diff.word_diff_formatted }} + {% elseif diff.word_diff < 0 %} + {{ diff.word_diff_formatted }} + {% else %} + 0 + {% endif %} + + + + {% if diff.link_diff > 0 %} + {{ diff.link_diff_formatted }} + {% elseif diff.link_diff < 0 %} + {{ diff.link_diff_formatted }} + {% else %} + 0 + {% endif %} + + + + {% if diff.media_diff > 0 %} + {{ diff.media_diff_formatted }} + {% elseif diff.media_diff < 0 %} + {{ diff.media_diff_formatted }} + {% else %} + 0 + {% endif %} + {% set score = languages['en'].staleness_score|default(0) %}