fix: page équipe charge directement contenu team.html
- Au lieu de rediriger, la page Next.js charge et injecte team.html - Exécution des scripts JavaScript et injection du CSS - Gestion d'erreur si team.html ne se charge pas - Logs détaillés pour diagnostiquer le processus Cette approche évite les problèmes de redirection et assure que : - team.html se charge correctement - Les scripts s'exécutent dans le contexte Next.js - Les visualisations s'affichent
This commit is contained in:
@@ -101,25 +101,113 @@ RUN echo "📊 Comptage des fichiers .md dans .techradar/data/radar" && \
|
|||||||
# La page Next.js pour le routing, le HTML statique pour garantir l'affichage
|
# La page Next.js pour le routing, le HTML statique pour garantir l'affichage
|
||||||
RUN mkdir -p .techradar/src/pages && \
|
RUN mkdir -p .techradar/src/pages && \
|
||||||
cat > .techradar/src/pages/team.tsx << 'EOF'
|
cat > .techradar/src/pages/team.tsx << 'EOF'
|
||||||
import { useEffect } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
|
|
||||||
export default function TeamPage() {
|
export default function TeamPage() {
|
||||||
|
const [content, setContent] = useState('');
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Redirection immédiate vers team.html
|
// Charger le contenu de team.html directement
|
||||||
// Cela évite les conflits avec les scripts JavaScript
|
console.log('🔄 TEAM PAGE: Chargement direct du contenu team.html');
|
||||||
if (typeof window !== 'undefined') {
|
|
||||||
console.log('🔄 TEAM PAGE: Redirection vers /team.html');
|
fetch('/team.html')
|
||||||
window.location.replace('/team.html');
|
.then(response => {
|
||||||
}
|
console.log('📡 TEAM PAGE: Réponse team.html:', response.status);
|
||||||
|
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
||||||
|
return response.text();
|
||||||
|
})
|
||||||
|
.then(html => {
|
||||||
|
console.log('✅ TEAM PAGE: Contenu team.html chargé, injection dans DOM');
|
||||||
|
setContent(html);
|
||||||
|
|
||||||
|
// Injecter le HTML dans le document après un court délai
|
||||||
|
setTimeout(() => {
|
||||||
|
const tempDiv = document.createElement('div');
|
||||||
|
tempDiv.innerHTML = html;
|
||||||
|
|
||||||
|
// Extraire et exécuter les scripts
|
||||||
|
const scripts = tempDiv.querySelectorAll('script');
|
||||||
|
scripts.forEach(script => {
|
||||||
|
if (script.src) {
|
||||||
|
// Script externe - charger dynamiquement
|
||||||
|
const newScript = document.createElement('script');
|
||||||
|
newScript.src = script.src;
|
||||||
|
document.head.appendChild(newScript);
|
||||||
|
console.log('🔧 TEAM PAGE: Script externe chargé:', script.src);
|
||||||
|
} else {
|
||||||
|
// Script inline - exécuter directement
|
||||||
|
try {
|
||||||
|
eval(script.textContent);
|
||||||
|
console.log('▶️ TEAM PAGE: Script inline exécuté');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('❌ TEAM PAGE: Erreur script inline:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Injecter le CSS
|
||||||
|
const styles = tempDiv.querySelectorAll('style');
|
||||||
|
styles.forEach(style => {
|
||||||
|
document.head.appendChild(style.cloneNode(true));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Injecter le contenu HTML (sans les scripts/styles déjà traités)
|
||||||
|
const bodyContent = tempDiv.querySelector('body');
|
||||||
|
if (bodyContent) {
|
||||||
|
document.body.innerHTML = bodyContent.innerHTML;
|
||||||
|
console.log('✅ TEAM PAGE: Contenu HTML injecté');
|
||||||
|
}
|
||||||
|
}, 100);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('❌ TEAM PAGE: Erreur chargement team.html:', error);
|
||||||
|
setContent(`
|
||||||
|
<div style="padding: 50px; text-align: center; font-family: Arial, sans-serif;">
|
||||||
|
<h2>Erreur de chargement</h2>
|
||||||
|
<p>Impossible de charger les visualisations équipe.</p>
|
||||||
|
<p>Erreur: ${error.message}</p>
|
||||||
|
<p><a href="/">Retour à l'accueil</a></p>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Ne rien rendre - la redirection va prendre le relais
|
// Pendant le chargement
|
||||||
return null;
|
if (!content) {
|
||||||
|
return (
|
||||||
|
<div style={{
|
||||||
|
width: '100vw',
|
||||||
|
height: '100vh',
|
||||||
|
background: '#1a4d3a',
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
position: 'fixed',
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
zIndex: 9999
|
||||||
|
}}>
|
||||||
|
<div style={{color: 'white', fontSize: '18px'}}>
|
||||||
|
Chargement des visualisations équipe...
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rendre le contenu chargé
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{width: '100vw', height: '100vh'}}
|
||||||
|
dangerouslySetInnerHTML={{__html: content}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
RUN echo "✅ Page team.tsx créée (version ultra-simplifiée)" && \
|
RUN echo "✅ Page team.tsx créée (version ultra-simplifiée)" && \
|
||||||
echo "🔍 VÉRIFICATION: Contenu de team.tsx créé:" && \
|
echo "🔍 VÉRIFICATION: Contenu de team.tsx créé:" && \
|
||||||
cat .techradar/src/pages/team.tsx
|
cat .techradar/src/pages/team.tsx && \
|
||||||
|
echo "🔍 VÉRIFICATION: team.html dans .techradar/public/:" && \
|
||||||
|
ls -la .techradar/public/team.html
|
||||||
|
|
||||||
# Créer aussi un fichier HTML statique /team/index.html pour garantir l'accès
|
# Créer aussi un fichier HTML statique /team/index.html pour garantir l'accès
|
||||||
RUN mkdir -p .techradar/public/team && \
|
RUN mkdir -p .techradar/public/team && \
|
||||||
@@ -502,6 +590,8 @@ RUN if [ -d "out" ]; then \
|
|||||||
else \
|
else \
|
||||||
echo "⚠️ public/team-visualization-data.json introuvable"; \
|
echo "⚠️ public/team-visualization-data.json introuvable"; \
|
||||||
fi && \
|
fi && \
|
||||||
|
echo "🔍 VÉRIFICATION: team.html dans out/:" && \
|
||||||
|
ls -la out/team.html 2>/dev/null || echo "❌ team.html absent de out/" && \
|
||||||
echo "" && \
|
echo "" && \
|
||||||
echo "📁 Vérification finale dans out/:" && \
|
echo "📁 Vérification finale dans out/:" && \
|
||||||
ls -la out/ | grep -E "(team\.html|team-visualization)" && echo "✅ Fichiers team présents dans out/" || echo "⚠️ Fichiers team non trouvés dans out/"; \
|
ls -la out/ | grep -E "(team\.html|team-visualization)" && echo "✅ Fichiers team présents dans out/" || echo "⚠️ Fichiers team non trouvés dans out/"; \
|
||||||
|
|||||||
Reference in New Issue
Block a user