chemins-de-la-transition / semapps

https://lescheminsdelatransition.org
Apache License 2.0
4 stars 0 forks source link

Only display Places/Paths/Travels(/Event) that have pictures on the Home Page #602

Open daemuu opened 11 months ago

daemuu commented 11 months ago

Proposed by @Tonfa during our last Work Residency (i let him develop further if needed)

Currently, for instance, all the news place are displayed, and most don't have a picture, which is a kind of "ugly", showcase wise

Tonfa commented 8 months ago

I'll change the description to add a picture "a picture is necessary to be featured on the homepage.

maxime-senza commented 5 months ago

I tried 2 possible fixes :

Test 1 in the file lists/FeaturedList/ItemGrid Adding a filter before mapping on line 92 .filter((id) => data[id]['pair:depictedBy'] !== undefined ), which makes the full block of code the following

        sortedIds
        .filter((id) => data[id]['pair:depictedBy'] !== undefined )
        .map((id) => (
          <CardBlock
            className={data[id]}
            key={id}
            record={data[id]}
            basePath={basePath}
            CardSubHeaderComponent={CardSubHeaderComponent}
            resource={resource}
          />
        ))

Test 2 in the file lists/FeaturedList/CardBlock Adding a condition before the return :

if (record['pair:depictedBy'] === undefined) {
    return false;
  }
  return (
    //component
)

Seems to me like the 1st way is more efficient.

Doubts

  1. In both cases the filtered element isn't replaced by anything, I wonder if this is because there's only 4 elements to display in the 'Place' section of the Home Page, or am I making the changes in the wrong spots

    Screenshot 2024-01-09 at 14 45 47
  2. There's no conditioning on which page this will be displayed on, so this won't just impact the home page. I don't see any way to apply this only on the home page..

Any pointers @Tonfa or @VincentFarcy ? :)

Note: I pushed the Test1 changes if you want to check it out

VincentFarcy commented 5 months ago

@maxime-senza il faut intervenir plus haut dans le code. c'est le .slice(0, 4); en ligne 62 qui réduit les résultats à 4

maxime-senza commented 5 months ago

maaaa j'avais pas spoté le slice, merciii !

maxime-senza commented 5 months ago

Sooo en testant @VincentFarcy :

Le block de code où il y a le slice n'impact pas la home, mais les blocs affichant les lieux similaires, comme par exemple sur la page "lieu". Pour voir ce qui était impacté j'ai tester en enlevant le slice

Pour continuer de tester j'ai ajouter un slice(0, 2) dans le block de code mentionné dans le commentaire précédent (ligne 92) et là ça impact bien la HP

Screenshot 2024-01-17 at 11 52 35

Du coup sur la HP on est bien dans le cas ou similarRecords est false ( !similarRecord ) return ids; ligne 57, donc le block de lignes 58 à 63 ne font rien...

J'ai spoté le "slice" qui réduit le nombre d'élément à 4 sur la home page, dans le fichier lists/FeaturedList/FeaturedList.js à la ligne 145 il y a un petit perPage={xs ? 10 : 4}; Vu que sur la HP on est pas sur un 'xs', c'est le 4 qui s'applique.

Pour tester j'ai changé le "4" en "5" perPage={xs ? 10 : 5}, là on a bien l'élément filtré et 4 élément qui s'affichent sur la HP. Mais suffirait qu'il y ait 2 éléments filtré et ça ne fonctionnerait plus, donc ce n'est pas une solution viable

Screenshot 2024-01-17 at 12 23 37

❓ Je me demande s'il ne faudrait pas mettre un filtre sur le widget FeaturedList, ligne 21 du fichier pages/HomePage/HomePage.js ? Quelque chose du style filter={{ 'pair:depictedBy': resource?.id }} mais qui fonctionne ^^"