Tables de données dans une Canvas

Étiquetté : 

  • Tables de données dans une Canvas

    Posté par Alexandre sur 6 septembre 2024 à 19h35

    Bonjour à tous

    J’ai un dév en cours avec un fort besoin d’affichage de données sous forme tabulaire sous powerapps Canvas.

    J’ai recensé les solutions suivantes :

    • usage d’une Model Driven App (MDA) : l’expérience utilisateur ne sera pas optimale, et l’usage de custom pages au sein de la MDA ne serait pas suffisant pour améliorer l’UX
    • le contrôle moderne Table :
      • ➕ : il est très réactif, le tri est rapide et pratique, il est moderne et donc agréable à voir, la table est accessible
      • ➖ : il n’est pas GA, il est buggé lors des changements de données, on ne peut l’utiliser correctement si on utilise des fonctions avancées (with, addColumns, tables liées…), on ne peut pas y ajouter de contrôles (checkbox, boutons etc…) au niveau des lignes
    • la gallerie :
      • ➕ : je peux le customiser à souhait
      • ➖ : le travail pour essayer de la rendre accessible est conséquent, il n’est absolument pas performant dès lors qu’on a une dizaine de colonne et des centaines de lignes (il lag lors des scrolls)
    • la table dans un contrôle HTML
      • ➕ : très rapide à générer et accessible
      • ➖ : pas possible d’interragir avec les lignes (contrôles, clic etc…)

    Bien évidemment j’ai tenté toutes les optimisations pour ne requêter que les données nécessaires, que les colonnes nécessaires, j’ai tenté en filtrage direct et en chargeant les données dans une collection etc… Je pense donc avoir mis toutes les chances de mon côté mais aucune solution n’est complètement acceptable.

    Avez vous des idées à tester ? Des solutions à proposer ? Des optimisations à me souffler ?

    Merci d’avance

    Alexandre a répondu Il y a 2 mois, 2 semaines 3 Membres · 13 Réponses
  • 13 Réponses
  • Nelson

    Membre
    6 septembre 2024 à 22h13

    Hello Alexandre,

    De mon côté, sûr mon plus gros projet (une GMAO), je suis parti sur une galerie en finalité.

    J’y limite l’affichage à 500 éléments car j’ai du faire face à des pc avec peu de vélocité (à mon plus grand regret. Sur ma machine j’étais déjà bien moins limité).

    Elle est remplie de conditions et je fonctionne avec une collection qui peut atteindre +- 7000 items selon le profil.

    Après, ils ont des filtres pour voir ce qu’ils souhaitent selon leur besoin.

  • Alexandre

    Membre
    6 septembre 2024 à 23h01

    Je suis loin d’une telle volumétrie ni complexité pour le moment et les performances sont catastrophiques…
    J’avoue ne pas comprendre ce qui ruine mes perfs… (j’ai même copié ma galerie sur une app nouvelle avec un seul écran pour voir si c’était lié mais non)

  • DavidZed

    Membre
    7 septembre 2024 à 0h24

    Hello,

    Si ta gouvernance permet l’utilisation de composants PCF, il y a le compo table du creator kit qui est assez véloce et relativement personnalisable.

    Pour ce qui est des galeries, le seul moyen d’avoir des performances acceptables est de charger la donnée dans une collection, mais au delà de 2000 éléments c’est un chargement poussif au démarrage et une gestion fastidieuse…

    Faire un composant de pagination peut aider aussi, l’idée est d’essayer de faire en sorte que l’utilisateur ne scrolle pas 😃

  • Alexandre

    Membre
    7 septembre 2024 à 17h11

    Je suspecte vraiment des problèmes de performance de la gallerie… ou bien un paramètre de powerapps
    En affichant ne serait-ce que 100 enregistrements de 16 colonnes chargés dans une gallerie, je fais bugger pendant plusieurs secondes l’affichage lorsque je scroll. Et je n’affiche que du texte dans mes items de gallerie, rien de follichon
    Vidéo : https://youtu.be/rmLEB5ijAng

    Je vais tenter avec le PCF dont tu me parles, pour l’instant je n’ai que cette solution 🙁

  • DavidZed

    Membre
    7 septembre 2024 à 17h31

    Ah oui en effet c’est laggy et en plus les données sont dans une collection ?

  • Nelson

    Membre
    7 septembre 2024 à 18h20

    Je t’avoue que c’est tout de même surprenant ce que tu nous montres là.

    Voici de mon côté ce que cela produit avec une collection de 5357 items, 14colonnes, des conditions à tout vas.

    (L’enregistrement vidéo n’a pas été apprécié par mon PC au passage :’) )

    https://nelsonboruchowitch.com/others/freezegal.mp4

    Version 3.24084.21

    J’ai fais une copie de mon app et j’ai désactivé l’ensemble des options pour voir s’il y avait des différences mais j’en note aucune (peut-être même une petite accélération enfaite)

  • Alexandre

    Membre
    7 septembre 2024 à 18h24

    Ah oui ca n’a rien a voir et ca ressemble plus à ce que j’ai l’habitude de voir…
    Il y a donc vraiment un problème qu’il faut que j’identifie au plus vite.

    Tu saurais me dire en quelle version de powerapps ton app est publiée ?
    Est-ce que tu es partie d’une app tablette ou une responsive ?
    Tout autre élément qui pourrait avoir un impact ?

    @david : oui c’est une collection de 16 colonnes (à coup de showcolumns) et même si je prend la source je ne note pas de différences de performance

  • Nelson

    Membre
    7 septembre 2024 à 18h39

    En version 3.24084.21

    App Tablette

    Aucune réelle différence avec ou sans options cochées (bon un mini gain de vélocité en décochant l’ensemble des options)

    Je te réponds plus amplement après, je reviens vite ^^”

    (Ma collection est faite à partir d’une requête vers un flux power automate.

    Je boucle sur mes éléments qui sont dans un json pour les ajoutés à ma collection ainsi :

    <pre class=”language-markup”>ClearCollect(test;
    ForAll(
    Table(ParseJSON(QueryResult));
    {
    ID:Value(ThisRecord.Value.Id);
    WO_WORK_ORDER:Value(ThisRecord.Value.WO_WORK_ORDER);
    WO_USER_STATUS:Text(ThisRecord.Value.WO_USER_STATUS);
    WO_EQUIPMENT:Text(ThisRecord.Value.WO_EQUIPMENT);
    WO_JOB:Text(ThisRecord.Value.WO_JOB);
    WO_JOB_TYPE:Text(ThisRecord.Value.WO_JOB_TYPE);
    WO_JOB_CLASS:Text(ThisRecord.Value.WO_JOB_CLASS);
    WO_PRIORITY:Text(ThisRecord.Value.WO_PRIORITY);
    WO_SUPERVISOR:Text(ThisRecord.Value.WO_SUPERVISOR);
    WO_PREVIOUS_WORK_ORDER:Value(ThisRecord.Value.WO_PREVIOUS_WORK_ORDER);
    WO_REPORT_DATE:DateTimeValue(ThisRecord.Value.WO_REPORT_DATE);
    WO_MANAGER_SCHEDULE_DATE:DateValue(ThisRecord.Value.WO_MANAGER_SCHEDULE_DATE);
    WO_TARGET_DATE:DateValue(ThisRecord.Value.WO_TARGET_DATE);
    WO_EQUIPMENT_DESCRIPTION:Text(ThisRecord.Value.WO_EQUIPMENT_DESCRIPTION);
    WO_JOB_DESCRIPTION:Text(ThisRecord.Value.WO_JOB_DESCRIPTION);
    WO_FEEDBACK_NOTE:Text(ThisRecord.Value.WO_FEEDBACK_NOTE);
    WO_MANAGER_NOTE:Text(ThisRecord.Value.WO_MANAGER_NOTE);
    WO_PROBLEM:Text(ThisRecord.Value.WO_PROBLEM);
    WO_GID_ALLOCATED:Text(ThisRecord.Value.WO_GID_ALLOCATED);
    WO_EMPLOYEE_ALLOCATED:Text(ThisRecord.Value.WO_EMPLOYEE_ALLOCATED);
    WO_FX_I:If(!IsBlank(ThisRecord.Value.WO_I);DateDiff(CurrentDateDay;ThisRecord.Value.WO_I;TimeUnit.Minutes));
    WO_FX_D:If(!IsBlank(ThisRecord.Value.WO_D);DateDiff(CurrentDateDay;ThisRecord.Value.WO_D;TimeUnit.Minutes));
    WO_FX_R:If(!IsBlank(ThisRecord.Value.WO_R);DateDiff(CurrentDateDay;ThisRecord.Value.WO_R;TimeUnit.Minutes));
    Cree:If(!IsBlank(ThisRecord.Value.Created);DateTimeValue(ThisRecord.Value.Created))
    }
    )
    )

    Donc au final j’ai 24colonnes dans ma collection.

  • Alexandre

    Membre
    7 septembre 2024 à 19h53

    Et si c’était le forall qui aidait la gallerie à “calculer” le contenu de la gallerie ?

    J’ai créé une app Tablette et j’obtient des lags moins conséquents, mais ca reste trop lent quand même (et ca me parait inconcevable d’utiliser un template tablette pour ce projet juste pour ca 🙁 )

    • Alexandre

      Membre
      7 septembre 2024 à 20h00

      Et si c’était le forall qui aidait la gallerie à “calculer” le contenu de la gallerie ?

      J’ai créé une app Tablette et j’obtient des lags moins conséquents, mais ca reste trop lent quand même (et ca me parait inconcevable d’utiliser un template tablette pour ce projet juste pour ca 🙁 )

      Il est probable aussi que ce soit lié au scroll trop gourmand puisque j’utilise le trackpad pour scroller…. Faudra que je reteste avec un souris

  • Alexandre

    Membre
    7 septembre 2024 à 21h01

    Ce n’est pas plus efficace avec un forall…

  • Nelson

    Membre
    8 septembre 2024 à 8h23

    Malheureusement, je n’ai pas d’autres pistes à te donner.

    Et je suis en charge de 35applications aussi complexes que celle que tu as vu et dans chacune d’entre elle, j’utilise des galeries pour affichage d’informations (avec beaucoup moins d’items que l’outil précédemment afficher ) et je n’ai jamais rencontré un lag aussi monstrueux que ce que tu nous montres.

  • Alexandre

    Membre
    8 septembre 2024 à 16h15

    Le composant DetailsList du creator kit est terriblement efficace pour le coup !

    Faut que je cherche quelles sont les contraintes VS les avantages à utiliser le creator kit chez nous, mais si rien ne s’y oppose le choix sera vite fait !

Connectez-vous pour répondre.