Tuto : Afficher des vignettes avec les initiales pour les utilisateurs sans photos de profil (Niveau : 🌕🌗🌑🌑🌑)

Étiquetté : , , ,

  • Tuto : Afficher des vignettes avec les initiales pour les utilisateurs sans photos de profil (Niveau : 🌕🌗🌑🌑🌑)

    Posté par DavidZed sur 22 novembre 2022 à 22h52

    Bonjour,

    Voici un nouveau tuto Ă©tape par Ă©tape : Remplacer l’image d’un utilisateur qui n’a pas de photo par une vignette colorĂ©e avec ses initiales : Comme dans de nombreux outils MS ou mĂȘme comme sur ce forum 😊

    On peut trouver facilement des tutos similaires (ex : Power Apps Display A User Photo Or Initials – Matthew Devaney) oĂč l’on va superposer un bouton sur l’image et afficher l’un ou l’autre en fonction de la prĂ©sence ou non de la photo sur le profil utilisateur.

    Je vous propose d’aller plus loin : Nous allons optimiser cela en gĂ©nĂ©rant un Code <Svg> qui affichera les initiales dans l’objet image.

    Nous n’aurons donc plus qu’un seul objet pour afficher la photo ou les initiales !

    Au menu nous allons donc :

    • Ajouter le connecteur Office365users

    • Ajouter une galerie avec une liste de personnes

    • DĂ©tecter si la personne a une photo de profil

    • GĂ©nĂ©rer un code svg pour les initiales

    • GĂ©nĂ©rer une couleur de fond alĂ©atoire

    • ParamĂ©trer quelques formules pour crĂ©er un objet « responsive » facilement rĂ©utilisable

    1) Ajout du connecteur Office365users

    Dans le menu données, cliquez sur « ajouter des données », inscrivez « office » dans la zone de recherche et sélectionnez « Office365users »

    Ce connecteur va nous permettre de rĂ©cupĂ©rer des infos Ă©tendues sur l’utilisateur, mais surtout de nous indiquer s’il dispose d’une photo de profil.

    2) Insérer une galerie verticale et lui mettre un format « Image et Titre »3) Mettre une liste de personnes dans la source de donnés de la galerie

    Une liste Sharepoint avec noms & email, une colonne de type « Person » ou une table Dataverse avec une colonne lookup sur la table des utilisateurs peuvent convenir.

    Pour l’expemple, vous pouvez utiliser la fonction searchuser du connecteur office365users :

    Office365Users.SearchUser({searchTerm:"a";top:20}) //Recherche les 20 premiers utilisateurs dont le nom prénom contiennent « a»

    Vous devriez vous retrouver avec des noms qui s’affichent :

    Si tel n’est pas le cas, assurez-vous bien que votre label Titre pointe bien sur le nom de la personne :

    4) Génération de la vignette avec les initiales ou, si présente, affichage de la photo de profil

    Dans l’objet image de la gallerie, dans le paramùtre image, nous allons mettre le code suivant :

    If(Len(ThisItem.Email)>0&&Office365Users.UserPhotoMetadata(ThisItem.Email).HasPhoto;Office365Users.UserPhoto(ThisItem.Email);"data:image/svg+xml,"&EncodeUrl("<svg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' height='100' width='100'><text font-family='Lucida Console' font-size='48' font-weight='500' x='18' y='66' fill='white'>"&With({Initials:Split(ThisItem.DisplayName;" ").Result};Left(First(Initials).Result;1)&Left(Last(Initials).Result;1))&"</text></svg>"))

    Voici le détail et les explications, une fois le code mis en forme :

    Nous voici maintenant avec une liste oĂč toutes les personnes qui n’ont pas de photo de profil, ont une vignette avec leurs initiales :

    Pour mettre un peu de couleur et retrouver plus facilement les personnes, nous allons, toujours sur l’objet image, gĂ©nĂ©rer des couleurs alĂ©atoires, grĂące Ă  la fonction Rand() en mettant dans le paramĂštre .fill de l’image :

    RGBA(Trunc(Rand()*150;0)+50;Trunc(Rand()*150;0)+50; Trunc(Rand()*150;0)+50;1)

    La function Trunc() nous permet d’ignorer les nombres aprùs la virgule

    Trunc(Rand()*150;0)+50 nous permet de générer un nombre aléatoire entre 50 et 200, les valeurs RGBA vont de 0 à 255, mais cette portée de valeurs va nous permettre de ne pas générer de couleurs trop sombres ou trop claires.

    Il y a bien sĂ»r d’autres possibilitĂ©s de gĂ©nĂ©rer des couleurs diffĂ©rentes pour chaque utilisateur, Mathew Devaney, dans le tuto citĂ© plus haut, utilise une table de 12 couleurs, et assigne une couleur en fonction des lettres. L’avantage est qu’une personne aura toujours la mĂȘme couleur, par contre la mĂ©thode Rand() que je propose est beaucoup moins gourmande en ressources.

    Notre Galerie prend forme :

    5) Maintenant, il est temps d’arrondir un peu les angles :

    Pour avoir un aspect rond, nous allons assigner aux paramĂštres RadiusTopLeft, RadiusTopRight etc, une formule pour garder au mieux cet aspect arrondi :

    Min(Self.Width;Self.Height)/2

    De cette maniĂšre, je peux redimensionner mon image, elle aura toujours la forme d’un cercle si je garde les mĂȘmes proportions largeur / hauteur, sinon elle aura au moins deux bords circulaires :

    Il y a un petit inconvĂ©nient cependant, dans certaines galeries trop chargĂ©es ou dans le cas de galeries imbriquĂ©es, il se peut que l’image des initiales ne soit pas gĂ©nĂ©rĂ©e.

    Dans ce cas, il reste toujours la possibilité de charger les svg générés dans une collection.

    PostID=M9KevECQHlyELHj

    Quentin a rĂ©pondu Il y a 10 mois, 3 semaines 1 Membre · 1 RĂ©ponse
  • 1 RĂ©ponse
  • Quentin

    Membre
    23 novembre 2022 Ă  8h19

    Trop Fort !!! Merci David, encore un super tuto😍

    CommentID=FCdWzvxvgZEaviF, PostID=M9KevECQHlyELHj

Connectez-vous pour répondre.