diff --git a/app/admin/dashboard/page.tsx b/app/admin/dashboard/page.tsx
index f4b259b..4cea927 100644
--- a/app/admin/dashboard/page.tsx
+++ b/app/admin/dashboard/page.tsx
@@ -153,20 +153,24 @@ export default function AdminDashboardAdvanced() {
percentage: prize.percentage,
})) || [];
+ // Ne montrer le graphique genre que s'il y a des données autres que "Non spécifié"
const genderChartData = stats.demographics?.gender
? [
{ name: "Hommes", value: stats.demographics.gender.male, color: GENDER_COLORS.male },
{ name: "Femmes", value: stats.demographics.gender.female, color: GENDER_COLORS.female },
{ name: "Autre", value: stats.demographics.gender.other, color: GENDER_COLORS.other },
- {
- name: "Non spécifié",
- value: stats.demographics.gender.notSpecified,
- color: GENDER_COLORS.notSpecified,
- },
].filter((item) => item.value > 0)
: [];
- const ageChartData = stats.demographics?.ageRanges || [];
+ // Ne montrer le graphique âge que s'il y a des données avec des vraies tranches d'âge
+ const ageChartData = (stats.demographics?.ageRanges || []).filter(
+ (item) => item.range && !item.range.toLowerCase().includes("non spécifié") && item.count > 0
+ );
+
+ // Ne montrer les villes que s'il y a des vraies villes (pas vides ou "non spécifié")
+ const topCitiesData = (stats.demographics?.topCities || []).filter(
+ (city) => city.city && city.city.trim() !== "" && !city.city.toLowerCase().includes("non spécifié") && city.count > 0
+ );
const ticketDistributedPercent = stats.tickets.total > 0
? ((stats.tickets.distributed / stats.tickets.total) * 100).toFixed(1)
@@ -420,15 +424,15 @@ export default function AdminDashboardAdvanced() {
- {/* Top Villes */}
- {stats?.demographics?.topCities && stats.demographics.topCities.length > 0 && (
+ {/* Top Villes - affiché uniquement s'il y a des vraies données de villes */}
+ {topCitiesData.length > 0 && (
Top 10 Villes des Participants
- {stats.demographics.topCities.slice(0, 10).map((city, idx) => (
+ {topCitiesData.slice(0, 10).map((city, idx) => (
([]);
@@ -15,7 +14,6 @@ export default function TicketManagement() {
const [filterStatus, setFilterStatus] = useState('');
const [filterPrizeType, setFilterPrizeType] = useState('');
const [selectedTicket, setSelectedTicket] = useState(null);
- const [showDebug, setShowDebug] = useState(false);
const loadTickets = useCallback(async () => {
try {
@@ -39,30 +37,19 @@ export default function TicketManagement() {
let totalPagesCount = 1;
if (Array.isArray(response)) {
- // Si la réponse est directement un tableau
- console.log('📦 Réponse est un tableau direct');
ticketsData = response;
total = response.length;
totalPagesCount = 1;
} else if (response.data && Array.isArray(response.data)) {
- // Si la réponse est un objet avec data
- console.log('📦 Réponse est un objet avec data');
ticketsData = response.data;
total = response.total || response.data.length;
totalPagesCount = response.totalPages || 1;
- } else {
- console.warn('⚠️ Format de réponse inattendu:', response);
}
- console.log('🎯 Tickets à afficher:', ticketsData);
-
setTickets(ticketsData);
setTotalPages(totalPagesCount);
setTotalTickets(total);
} catch (err: any) {
- console.error('❌ Erreur lors du chargement:', err);
-
- // Messages d'erreur personnalisés selon le type d'erreur
let errorMessage = 'Erreur lors du chargement des tickets';
if (err.status === 401) {
@@ -256,7 +243,7 @@ export default function TicketManagement() {
Statut
- Distribué le
+ Joué le
Utilisé par
@@ -313,13 +300,13 @@ export default function TicketManagement() {
- {/* DISTRIBUÉ LE */}
+ {/* DISTRIBUÉ LE (date d'utilisation du ticket) */}