tfrere commited on
Commit
c344606
·
1 Parent(s): 2f38845

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
- const filters = [];
 
12
 
13
- // Vérifier si le titre contient déjà le terme de recherche
14
- let cleanTitle = title;
15
- let searchTermInTitle = false;
 
16
 
17
- if (title && searchQuery) {
18
- // Vérifier si le titre contient déjà "matching"
19
- if (
20
- title.toLowerCase().includes(`matching "${searchQuery.toLowerCase()}"`)
21
- ) {
22
- searchTermInTitle = true;
23
  }
24
- }
25
 
26
- // Ajouter le titre de la section (catégorie)
27
- if (title) {
28
- // Si le titre contient déjà le terme de recherche, on l'utilise tel quel
29
- if (searchTermInTitle) {
30
- filters.push(title.toLowerCase());
31
- // On ne rajoute pas searchQuery plus tard
32
- } else {
33
- // Sinon on ajoute le titre sans "matching"
34
- filters.push(title.toLowerCase());
 
 
 
 
 
35
  }
36
  }
37
 
38
- // Ajouter les langues sélectionnées
39
  if (selectedLanguage && selectedLanguage.size > 0) {
40
  const languages = Array.from(selectedLanguage).join(", ");
41
- filters.push(`language: ${languages}`);
 
 
 
 
 
 
 
 
42
  }
43
 
44
- // Ajouter le filtre Arena
45
  if (arenaOnly) {
46
- filters.push("arena only");
47
  }
48
 
49
- // Ajouter le terme de recherche seulement s'il n'est pas déjà dans le titre
50
- if (searchQuery && !searchTermInTitle) {
51
- filters.push(`matching "${searchQuery}"`);
52
  }
53
 
54
- if (filters.length === 0) {
 
55
  return "No results found";
56
  }
57
 
58
- return `No ${filters.join(" + ")} leaderboards found`;
 
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 (