Tuto : Afficher des vignettes avec les initiales pour les utilisateurs sans photos de profil (Niveau : đđđđđ)
-
Tuto : Afficher des vignettes avec les initiales pour les utilisateurs sans photos de profil (Niveau : đđđđđ)
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
-
Connectez-vous pour répondre.