Spaces:
Running
Running
fix empty states
Browse files
client/src/components/LeaderboardSection/components/EmptyState.jsx
CHANGED
@@ -8,54 +8,67 @@ const EmptyState = ({ title, searchQuery }) => {
|
|
8 |
|
9 |
// Construire un message plus explicite
|
10 |
const getDetailedMessage = () => {
|
11 |
-
|
|
|
12 |
|
13 |
-
//
|
14 |
-
|
15 |
-
|
|
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
title.toLowerCase().includes(`matching "${searchQuery.toLowerCase()}"`)
|
21 |
-
) {
|
22 |
-
searchTermInTitle = true;
|
23 |
}
|
24 |
-
}
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
}
|
37 |
|
38 |
-
// Ajouter les langues sélectionnées
|
39 |
if (selectedLanguage && selectedLanguage.size > 0) {
|
40 |
const languages = Array.from(selectedLanguage).join(", ");
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
}
|
43 |
|
44 |
-
// Ajouter le filtre Arena
|
45 |
if (arenaOnly) {
|
46 |
-
|
47 |
}
|
48 |
|
49 |
-
// Ajouter le terme de recherche
|
50 |
-
if (searchQuery
|
51 |
-
|
52 |
}
|
53 |
|
54 |
-
|
|
|
55 |
return "No results found";
|
56 |
}
|
57 |
|
58 |
-
|
|
|
59 |
};
|
60 |
|
61 |
return (
|
|
|
8 |
|
9 |
// Construire un message plus explicite
|
10 |
const getDetailedMessage = () => {
|
11 |
+
// Approche simplifiée : construire le message à partir des éléments de base
|
12 |
+
const parts = [];
|
13 |
|
14 |
+
// 1. Ajouter le titre de base (catégorie)
|
15 |
+
if (title) {
|
16 |
+
// Extraire le titre de base sans "matching" ni "language:"
|
17 |
+
let baseTitle = title;
|
18 |
|
19 |
+
// Enlever "matching" et tout ce qui suit
|
20 |
+
if (baseTitle.includes("matching")) {
|
21 |
+
baseTitle = baseTitle.split("matching")[0].trim();
|
|
|
|
|
|
|
22 |
}
|
|
|
23 |
|
24 |
+
// Si le titre contient "Language:" avec des langues spécifiques, le garder tel quel
|
25 |
+
if (baseTitle.toLowerCase().includes("language:")) {
|
26 |
+
parts.push(baseTitle.toLowerCase());
|
27 |
+
}
|
28 |
+
// Si le titre est "Language Specific" et qu'on a des langues sélectionnées, ne pas l'ajouter
|
29 |
+
else if (
|
30 |
+
baseTitle.toLowerCase().includes("language specific") &&
|
31 |
+
selectedLanguage.size > 0
|
32 |
+
) {
|
33 |
+
// Ne pas ajouter "Language Specific" car on va ajouter les langues spécifiques plus tard
|
34 |
+
}
|
35 |
+
// Sinon, ajouter le titre de base
|
36 |
+
else {
|
37 |
+
parts.push(baseTitle.toLowerCase());
|
38 |
}
|
39 |
}
|
40 |
|
41 |
+
// 2. Ajouter les langues sélectionnées si elles ne sont pas déjà dans le titre
|
42 |
if (selectedLanguage && selectedLanguage.size > 0) {
|
43 |
const languages = Array.from(selectedLanguage).join(", ");
|
44 |
+
|
45 |
+
// Vérifier si les langues sont déjà dans le titre
|
46 |
+
if (
|
47 |
+
!parts.some((part) =>
|
48 |
+
part.toLowerCase().includes(`language: ${languages.toLowerCase()}`)
|
49 |
+
)
|
50 |
+
) {
|
51 |
+
parts.push(`language: ${languages}`);
|
52 |
+
}
|
53 |
}
|
54 |
|
55 |
+
// 3. Ajouter le filtre Arena
|
56 |
if (arenaOnly) {
|
57 |
+
parts.push("arena only");
|
58 |
}
|
59 |
|
60 |
+
// 4. Ajouter le terme de recherche
|
61 |
+
if (searchQuery) {
|
62 |
+
parts.push(`matching "${searchQuery}"`);
|
63 |
}
|
64 |
|
65 |
+
// Si aucun filtre n'est actif, afficher un message simple
|
66 |
+
if (parts.length === 0) {
|
67 |
return "No results found";
|
68 |
}
|
69 |
|
70 |
+
// Construire le message final
|
71 |
+
return `No ${parts.join(" + ")} leaderboards found`;
|
72 |
};
|
73 |
|
74 |
return (
|