French Power Platform User Group

Please login or click SIGN UP FOR FREE to create your PowerPlatformUG account to join this user group.
Expand all | Collapse all

Design Application

Jump to Best Answer
  • 1.  Design Application

    Posted Jun 28, 2021 12:27 PM
    bonjour

    Je souhaiterais rendre plus agréable cet écran en retirant les doublons de ma catégorie (en bleu) et ma sous catégorie(en vert). Commet réaliser cette opération?


    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------


  • 2.  RE: Design Application

    Gold Contributor
    Posted Jun 30, 2021 07:31 AM
    Salut Philippe,
    Est-ce que tu peux nous donner la formule qu'il y a dans la propriétés Items de ta galerie stp ?

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 3.  RE: Design Application

    Posted Jun 30, 2021 10:04 AM
    Bonjour Emmanuel

    Dans la propriété ITEMS j'ai ce code qui permet de filtrer les questions en fonction de la période concernée. La liste des questions est différente au semestre


    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 4.  RE: Design Application

    Gold Contributor
    Posted Jun 30, 2021 10:11 AM
    Ok. Alors ce qu'il faudrait faire c'est d'abord de placer le résultat de cette formule dans une collection et que ce soit la collection qui alimente la galerie.
    C'est à dire que dans le OnVisible de ton écran où se trouve ta galerie, il faudrait mettre le code suivant :
    ClearCollect(colQuestions; <...tout ton code de ta capture ci-dessus...>)​

    Ensuite, dans le Items de ta galerie, il faudrait juste mettre : colQuestions.

    Est-ce que tu peux déjà faire ça et ensuite vérifier déjà que tu fonctionnes comme avant ?
    Une fois que ça sera fait, je te montrerais comment masquer les doublons de catégories/sous-catégories...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 5.  RE: Design Application

    Posted Jun 30, 2021 10:47 AM
    Emmanuel,
    Les modifications sont ok

    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 6.  RE: Design Application

    Posted Jun 30, 2021 11:37 AM
    Emmanuel

    Les formules sont ok dans mon application

    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 7.  RE: Design Application

    Gold Contributor
    Posted Jul 01, 2021 05:17 AM
    Ok nickel... Alors, en fait, on va faire le boulot côté OnVisible de ton écran où il y a la galerie, c'est à dire là où tu as mis le code hier.
    Remplace le ClearCollect(colQuestions; <...>) que tu as mis hier par le code ci-dessous :
    // Construire la liste des questions (rajout d'une colonne "CategSousCateg" qui concatène la catégorie et la sous-catégorie pour détecter la rupture dès qu'il y a un changement de l'une ou l'autre ; rajout d'une colonne "Rupture" qui vaudra "x" lorsqu'il y aura rupture de catégorie ou sous-catégorie)
    ClearCollect(
        colQuestions; 
        AddColumns(
            <...tout ton code de ta capture ci-dessus...>; 
            "CategSousCateg"; 
            <tonchampcategorie> & "|" & <tonchampsouscategorie>; 
            "Rupture";
            ""
        )
    )​​;;
    // Copie des questions dans une autre collection pour boucler dessus (car on ne peut pas patcher la collection sur laquelle on boucle)
    ClearCollect(colQuestionsLoop; colQuestions);;
    // Préparation de la collection qui servira à stocker la valeur précédente de CategSousCateg
    Clear(colPreviousCategSousCateg);;
    // Boucler et détecter les ruptures
    ForAll(
        colQuestionsLoop; 
        If(
            Last(colPreviousCategSousCateg).CategSousCateg <> ThisRecord.CategSousCateg; 
            Patch(
                colQuestions; 
                {ID: ThisRecord.ID}; 
                {Rupture: "x"}
            )
        );;
        Collect(colPreviousCategSousCateg; ThisRecord)
    );;
    // Nettoyage des collections temporaires
    Clear(colQuestionsLoop);;
    Clear(colPreviousCategSousCateg);;


    Ensuite, côté galerie :

    • tu laisses juste colQuestions dans le Items
    • sur tes libellés de catégorie et de sous-catégorie tu mets ceci dans leur propriété OnVisible : ThisItem.Rupture = "x"

    Voilou... Dis-moi si ça marche... J'ai testé le code chez moi sur une source de données bidon et ça marche donc, y'a pas de raison... Et n'hésite pas si t'as des questions sur la logique du code ci-dessus... Toujours intéressant de bien comprendre ce qu'il s'y passe... 😉

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 8.  RE: Design Application

    Posted Jul 01, 2021 06:17 AM
    Bonjour Emmanuel

    Merci pour ce code que j'ai pu implémenter dans le OnVisible de mon écran.

    Seule la dernière action m'interpelle car je n'ai pas la propriété OnVisible sur mes labels Catégorie et sous catégories, cf copie écran ci dessous


    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 9.  RE: Design Application

    Gold Contributor
    Posted Jul 01, 2021 06:22 AM
    Pardon, je me suis trompé. C'est pas OnVisible, c'est juste Visible... 😉

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 10.  RE: Design Application

    Posted Jul 01, 2021 08:17 AM
    Merci Emmanuel, je me doutais , cependant je n'obtiens pas le résultat souhaité

    Avant mise en place du code proposé

    Résultat avec le code proposé , cela ne garde que la première catégorie et sous catégorie, je perds donc Catégorie: Projets locaux et AIVP et stock AIVP "pur privatif"


    Ce que je voudrais faire









    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 11.  RE: Design Application

    Posted Jul 01, 2021 08:31 AM
    Emmanuel

    J'obtiens le bon résultat en mettant  monchampcatégoreieValue et monchampsouscatégorie.Value





    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 12.  RE: Design Application

    Gold Contributor
    Posted Jul 01, 2021 10:38 AM
    Exact, bien vu...
    Après, pour un meilleur rendu, tu peux te débrouiller pour rendre le fond bleu et vert toujours présents même lorsque le libellé d'une catégorie ou d'une sous-catégorie est masquée... Par exemple en mettant un rectangle derrière le libellé et en mettant la couleur sur ce rectangle plutôt que sur le libellé...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 13.  RE: Design Application

    Gold Contributor
    Posted Jul 01, 2021 10:42 AM
    Remarque : pour simplifier les choses j'ai concaténer la catégorie et la sous-catégorie pour détecter les ruptures sur l'un ou l'autre. Ce qui fait que tu pourrais potentiellement avoir ceci :

    Si jamais tu voulais faire exactement comme sur ta dernière capture Excel, ce serait un poil plus compliqué...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 14.  RE: Design Application

    Posted Jul 01, 2021 11:22 AM
    Merci Emmanuel pour cette disponibilité, je vais suivre les indications indiques avec le rectangle et d'après ce que j'ai vu sur youtube pour réaliser comme sur la dernière copie d'écran ce serait utiliser la fonction Group BY, quelque soit soit la método je suis preneur de tes conseils

    Ton aide est vraiment précieuse

    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 15.  RE: Design Application
    Best Answer

    Gold Contributor
    Posted Jul 01, 2021 11:27 AM
    Effectivement, tu pourrais utiliser le GroupBy() mais il est pas facile à manipuler. Tu pourrais aussi imbriquer des galeries, mais on ne peut en imbriquer que 2. Donc y'aurait un peu de boulot pour arriver au bon résultat souhaité...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 16.  RE: Design Application

    Posted Jul 13, 2021 01:42 PM
    Bonsoir Emmanuel

    Je me suis lancé dans l'utilisation du GroupBy et j'ai imbriqué 2 galeries, ci dessous le résultat

    J'ai 2 soucis :
                       le 1er est que le toggle de l'existence de la réponse ne se déclenche pas quand je saisi une donnée
                                      propriété Default =Not(
    IsBlank(
    LookUp(
    colReponses;
    'Libellé Période' = locForm.scLibPeriode && Etablissement.Value = LookUp(
    Users;
    Mail = gloUser.Email
    ).Etablissement.Value && Question = ThisItem.Question
    )
    )
    )
                       le 2ème est que le bouton enregistrer ne met pas a jour les données
    ci dessous le code du OnSelect
    ClearCollect(// charge les réponses actuelles
    colCurrentReponses;
    ReponsesAIVP
    );;
    ForAll(// Parcourir les réponses mises à jour par l'utilisateur
    colReponses;
    If(
    IsBlank(// si la réponse n'exite pas encore
    LookUp(
    colCurrentReponses;
    ID = colReponses[@ID]
    )
    );
    Patch(// la créer
    ReponsesAIVP;
    Defaults(ReponsesAIVP);
    {
    'Libellé Période': colReponses[@'Libellé Période'];
    Etablissement: colReponses[@Etablissement];
    CategorieQuestion: colReponses[@CategorieQuestion];
    SousCategorieQuestion: colReponses[@SousCategorieQuestion];
    Question: colReponses[@Question];
    Reponse: colReponses[@Reponse]
    }
    );
    First(// Sinon la modifier
    UpdateIf(
    ReponsesAIVP;
    ID = colReponses[@ID];
    {Reponse: colReponses[@Reponse]}
    )
    )
    )
    );;
    Notify(
    "Vos données ont été enregistrées avec succès.";
    NotificationType.Success
    );;
    Navigate(Accueil)

    la galerie Catégorie et sousCatégorie est obtenue par le code suivant
    GroupBy(
    AddColumns(
    Questions;
    "Categ";
    CategorieQuestion.Value;
    "SousCateg";
    SousCategorieQuestion.Value
    );
    "Categ";
    "SousCateg";
    "GroupByCategorie"
    )

    Pourrais tu m'aiguiller sur ces 2 problêmes

    Merci à toi

    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 17.  RE: Design Application

    Gold Contributor
    Posted Jul 13, 2021 05:29 PM

    Ouille... Autant de code non formatté -> super galère à lire. Est-ce que tu pourrais rééditer ton dernier post ci-dessus et recopier-coller le code de Power Apps (après l'avoir formatté dans Power Apps, indenté je veux dire) dans la popup de code de l'éditeur du forum en cliquant sur ce bouton :



    Et de manière générale, colle toujours ton code Power Apps dans cette popup : ça le rend beaucoup plus lisible... 😉

    Bon, sinon, je vais être cash : tu t'embarques dans un truc assez complexe et qui va pas être facile à réaliser et à stabiliser. Mais je salue l'effort...
    Je vais essayer de t'aider... Ca va pas être facile passke entre le GroupBy(), la double galerie et la mécanique de gestion dynamique des données, sans avoir l'appli sous la main ça va être coton...

    Souci n° 1

    Tu dis que le toggle de présence de réponse ne s'active pas lorsque tu saisis une donnée. Pourtant sur ta capture c'est bien le cas non ?

    Souci n° 2

    Je vais attendre que tu me formattes le code pour y jeter un oeil... 😉



    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 18.  RE: Design Application

    Posted Jul 14, 2021 05:21 AM
      |   view attached
    Bonjour Emmanuel
    Désolé pour le formatage du code, je n'avais pas été assez curieux sur tous les boutons existants dans le post
    Concernant le toggle d'existence il fonctionne lorsqu'il récupère des données déja saisies, mais lorsque je saisis une nouvelle donnée dans l'inputText vide ,il ne se déclenche pas (saisie du nombre 20)
    Not(
        IsBlank(
            LookUp(
                colReponses;
                scLibPeriode = locForm.scLibPeriode && scEtablissement.Value = LookUp(
                    Users;
                    Mail = gloUser.Email
                ).Etablissement.Value && scQuestion = ThisItem.Question
            )
        )
    )​

    Quand je compare l'ancienne version et la nouvelle, je vois que la propriété Par défaut est Inactif dans la V2 (galeries imbriquées) alors que dans la V1 Par défaut est Actif, le code dans Default est le même dans les 2 versions
    V1

    V2
    **************************************************************************************************************

    le code d'enregistrement du bouton disquette
    ClearCollect(// charge les réponses actuelles
        colCurrentReponses;
        ReponsesAIVP
    );;
    ForAll(// Parcourir les réponses mises à jour par l'utilisateur
        colReponses;
        If(
            IsBlank(// si la réponse n'exite pas encore
                LookUp(
                    colCurrentReponses;
                    ID = colReponses[@ID]
                )
            );
            Patch(// la créer
                ReponsesAIVP;
                Defaults(ReponsesAIVP);
                {
                    'Libellé Période': colReponses[@'Libellé Période'];
                    Etablissement: colReponses[@Etablissement];
                    CategorieQuestion: colReponses[@CategorieQuestion];
                    SousCategorieQuestion: colReponses[@SousCategorieQuestion];
                    Question: colReponses[@Question];
                    Reponse: colReponses[@Reponse]
                }
            );
            First(// Sinon la modifier
                UpdateIf(
                    ReponsesAIVP;
                    ID = colReponses[@ID];
                    {Reponse: colReponses[@Reponse]}
                )
            )
        )
    );;
    Notify(
        "Vos données ont été enregistrées avec succès.";
        NotificationType.Success
    );;
    Navigate(Accueil)​
    Concernant ce code c'est exactement le même qu'avec la galerie simple ou celui-ci fonctionne. En pièce jointe l'appli exportée, si besoin des listes sharepoint dis moi comment je peux te les envoyées .

    Si tu as une idée comment organiser différemment le questionnaire je suis preneur,. Pour rappel dans ce questionnaire il y a des themes qui peuvent avoir 1 ou plusieurs sous thèmes , et dans un sous thème il y a une ou plusieurs questions . J'avoue que l'imbrication de galerie est plus lisible mais je pars dans une galère, si seulement les utilisateurs pouvaient avoir des besoins simples......

    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------

    Attachment(s)



  • 19.  RE: Design Application

    Gold Contributor
    Posted Jul 14, 2021 06:20 PM
    Edited by EMMANUEL GALLIS Jul 14, 2021 06:21 PM
    Merci pour le formatage, c'est nickel ! Ca me permet de voir en 2s si le code semble correct ou pas.

    Tu peux me dire ce que tu as dans le OnChange du TextInput ?

    Ah, et si tu peux me décrire le besoin initial... Je pourrais peut-être avoir une idée sur comment l'implémenter autrement... Merci.

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 20.  RE: Design Application

    Posted Jul 15, 2021 02:51 AM
    Bonjour Emmanuel

    Bien vu, il manquait le code dans le OnChange du TextInput. Cela fonctionne parfaitement.

    Le besoin initial est de mettre à disposition un questionnaire à une population d'utilisateurs sur une filière traitant du RGPD. La responsable du questionnaire m'a fait une maquette sur Excel que l'on a revu ensemble. Ce questionnaire devra être rempli trimestriellement, certaines questions apparaissent uniquement au semestre. Les questions sont regroupées en thèmes et dans chaque thème il y a 1 ou plusieurs sous thèmes.
    Particularité de certaines questions :
                                                          1) si la réponse est oui alors une nouvelle question apparaît

    une cartographie a-t-elle été réalisée ? oui/non
    si oui, combien de contrats sont concernés par une mise à jour?  

                                                           2) l'utilisateur est invité à saisir les données détail et le total est calculé par la somme des éléments disposés en dessous

     nb de demandes de droit d'accès total
    clients prospects
    collaborateurs
    autre

                                                           3) et le plus compliqué :  faire un tableau variable comme ci dessous . (j'ai déja posté ce type de difficulté à laquelle tu as fais une proposition, et je suis en cours de reflexion sur le modèle de données)

    nb de violation de données déclarées CNIL 3

    cas 1 cas 2 Cas3
    causes de la violation monochoix
     - acte interne malveillant  
     - acte interne accidentel  
     - acte externe malveillant  
     - origine non humaine (virus informatqiue, catastrophe naturelle, etc…)  
     - inconnue  
       
    nature de la violation  multichoix
     - perte de confidentialité  
     - perte d'intégrité  
     - perte de disponibilité  
       
       
    origine de l'incident   monochoix
     - équipement perdu ou volé  
     - papier perdu, volé ou laissé accessible dans un endroit non sécurisé  
     - piratage, logiciel malveillant (ransonware, phishing…)  
     - mise au rebus de papier sans destruction physique  
     - mise au rebus d'appareils numérique sans effacementt sécurié  
     - publication non volontaire d'information  
     - données de la mauvaise personne affichée sur le portail client  
     - données personnelles envoyées à un mauvais destinataire  
     - informations personnelles divulguées de façon verbale  
     - autres   
       
    Estimation du niveau de gravité monochoix
     - négligeable  
     - limitée  
     - importante  
     - maximale  


    L'idée est de présenter de façon agréable les thèmes , sous thèmes et questions , c'est pourquoi ma V2 se présente ainsi


    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------



  • 21.  RE: Design Application

    Gold Contributor
    Posted Jul 15, 2021 05:13 AM
    Par rapport à ton besoin : pourquoi vouloir faire quelque chose de dynamique ? Qu'est-ce qui le justifie ? Est-ce que les questions qui constituent le formulaire changent en permanence ? Est-ce que vous avez une grande quantité de formulaires différents à produire ?

    Parce-que si le besoin c'est d'avoir un beau formulaire où tout est possible mais où les questions sont "fixes", alors le plus simple c'est d'utiliser un écran avec défilement dans Power Apps et de mettre chaque question dans un datacard...

    ------------------------------
    EMMANUEL GALLIS
    Power Platform Consultant
    France
    ------------------------------



  • 22.  RE: Design Application

    Posted Jul 16, 2021 02:18 AM
    Bonjour Emmanuel
    Les questions ne changent pas et sont fixes. Ce que tu proposes (écran avec défilement et chaque question dans un datacard) c'est de faire un formulaire , c'est bien ça ou pas?
    Merci d'avance

    ------------------------------
    Philippe CULOT
    Data Analyst
    ------------------------------