Wiki source code of Saisie de données

Last modified by Aurelie Bertrand on 2025/05/13 15:27

Hide last authors
abertrand 19.1 1 {{ddtoc/}}
2
crandon 6.1 3 = Préambule =
4
crandon 7.1 5 La saisie de données a pour but d'ajouter de nouvelles données via la présence d'un formulaire affiché dans le tableau de bord.
crandon 6.1 6
abertrand 14.2 7 Le principe consiste à la création d'un formulaire créant automatiquement une table dans une base de données relationnelle de type MySQL, PostgreSQL, MariaDB, H2 ou Oracle.
crandon 6.1 8
crandon 7.1 9 Les données saisies par l'utilisateur final seront stockées dans cette table, il sera donc possible, via le Studio, de créer un modèle de données basé sur cette table.
crandon 6.1 10
abertrand 34.5 11 = Configurer la saisie de données =
crandon 6.1 12
Aurelie Bertrand 74.1 13 Pour utiliser cette fonctionnalité, il faut la configurer au niveau de l'interface **Paramètres serveurs > Bases de données > [[Saisie des données>>doc:Digdash.deployment.configuration.configuration_guide.data_entry.WebHome]]**[[.>>doc:Digdash.deployment.configuration.configuration_guide.data_entry.WebHome]]
crandon 6.1 14
abertrand 14.2 15 Cette interface vous permet d'activer la fonctionnalité et de choisir la base de données dans laquelle les données issues de la saisie seront stockées.
crandon 6.1 16
Aurelie Bertrand 74.1 17 [[image:Data_entry_configuration_FR.png||alt="Configuration saisie données"]]
abertrand 14.2 18
crandon 6.1 19 Il est possible de choisir la base de données par défaut, celle-ci est une base de données de type H2. Cette base de données n'est pas une base de données de production, nous ne conseillons donc pas de l'utiliser.
20
abertrand 14.2 21 (% class="box warningmessage" %)
22 (((
abertrand 15.1 23 ❗Seules les bases de données de type MySQL, PostgreSQL, MariaDB, H2 et Oracle sont supportées.
abertrand 14.2 24 )))
crandon 6.1 25
abertrand 34.5 26 = Créer un formulaire =
crandon 6.1 27
Aurelie Bertrand 91.1 28 (% class="box infomessage" %)
29 (((
30 💡 Vous pouvez trouver plus d'informations sur les composants dans la documentation [[https:~~/~~/help.form.io/userguide/form-building>>https://help.form.io/userguide/form-building]].
31 )))
32
crandon 6.1 33 Une fois la fonctionnalité activée et configurée, il est possible de créer un ou plusieurs formulaires.
34
abertrand 38.2 35 Pour cela :
crandon 6.1 36
abertrand 38.2 37 1. Connectez-vous à l'éditeur de tableau de bord, et cliquez sur **Formulaires** dans le panneau de gauche listant les éléments pouvant être ajoutés au tableau de bord.
Aurelie Bertrand 79.1 38 [[image:Data_entry_new_form_FR.png||alt="Nouveau formulaire"]]
abertrand 38.2 39 1. Cliquez alors sur le bouton **Nouveau formulaire**.
40 ➡ L'interface de création de formulaire s'affiche alors.
crandon 6.1 41
Aurelie Bertrand 72.1 42 (% class="box infomessage" %)
43 (((
44 ℹ Cette interface n'est disponible qu'aux utilisateurs ayant l'autorisation **Tableau de bord > Créer un formulaire**.
45 )))
abertrand 38.2 46
crandon 6.1 47 Voici l'interface de création de formulaire :
48
Aurelie Bertrand 79.1 49 [[image:Data_entry_new_form_page_FR.png]]
crandon 6.1 50
abertrand 34.2 51 1. Dans la section **Propriétés**, renseignez l'**Identifiant** du formulaire : celui-ci correspond au nom de la table créée dans la base de données. Cet identifiant doit être unique et ne doit contenir que des caractères alphanumériques.
52 1. Entrez le **Nom **du formulaire : celui-ci correspond au nom du formulaire affiché dans les différentes interfaces.
abertrand 50.2 53 1. Le champ **Rôle **permet de restreindre l'accès au formulaire à un rôle. Consultez le paragraphe [[Sécuriser un formulaire>>doc:||anchor="Sécurité_form"]] pour plus de détails.
Aurelie Bertrand 72.1 54 1. Le champ **Partage **permet de restreindre l'accès au formulaire à un profil utilisateur ou définir un partage personnalisé. Consultez le paragraphe [[Sécuriser un formulaire>>doc:||anchor="Sécurité_form"]] pour plus de détails.
abertrand 34.2 55 1. Dans la section **Contenu**, définissez les champs du formulaire : glissez-déposez les champs souhaités depuis la liste des différents types de champs (à gauche) dans le formulaire de saisie (à droite).
abertrand 39.2 56 ➡ Pour chaque champ ajouté, une fenêtre de configuration du champ s'affiche. Consultez le paragraphe [[Configurer les champs de formulaire>>doc:||anchor="Configuration_champ_form"]] ci-dessous pour plus de détails.
crandon 6.1 57
abertrand 34.2 58 (% class="box infomessage" %)
59 (((
abertrand 34.8 60 ℹ Un formulaire doit comporter **au minimum un champ et un bouton** permettant l'envoi des données.
abertrand 34.2 61 )))
62
Aurelie Bertrand 79.1 63 [[image:Data_entry_form_example_FR.png]]
64
abertrand 34.5 65 (% start="5" %)
66 1. Une fois tous les champs ajoutés au formulaire, vous pouvez le sauvegarder en cliquant sur **OK** en bas du formulaire.
67 ➡ Une table ayant pour nom l'identifiant du formulaire est créée dans la base de données.
crandon 6.1 68
abertrand 39.2 69 (% id="cke_bm_2989S" style="display:none" %) (%%)Il est possible d'éditer, déplacer, copier ou supprimer un composant via la barre d'outils qui s'affiche au survol du composant avec la souris.
70 [[image:Editer_composant.png||alt="Edition_composant"]]
71
72
abertrand 34.5 73 Lors de la sauvegarde de celui-ci, la table sera automatiquement mise à jour. Par contre, il n'est pas possible de modifier le type d'un champ (ex: passer d'un champ de type Date à un champ de type Nombre).
74
75 Cette table contiendra l'ensemble des champs présents dans le formulaire ainsi que les colonnes suivantes :
76
abertrand 34.8 77 * **un identifiant unique **(incrémenté de manière automatique) permettant la modification d'une donnée (son nom est id_formulaire_id).
78 * **dd_user** : identifiant de l'utilisateur ayant ajouté ou modifié la donnée
79 * **creation_date** : date de création de la donnée
80 * **modification_date** : date de modification de la donnée
abertrand 34.5 81
82 La suppression d'un formulaire entraînera la suppression de la table et des données qu'elle contient.
83
Aurelie Bertrand 103.1 84 == Configurer les champs de formulaire{{id name="Configuration_champ_form"/}} ==
abertrand 34.5 85
abertrand 34.4 86 Lors de l'ajout d'un champ, une fenêtre de configuration du champ apparaît. Cette interface comporte plusieurs onglets et permet à la fois de configurer le rendu du champ et son comportement dans le formulaire.
87
Aurelie Bertrand 85.1 88 (% class="box infomessage" %)
89 (((
90 💡 Vous pouvez obtenir de l'aide sur le composant courant en cliquant sur le bouton **Aide **en haut à droite de la fenêtre de configuration.
91 )))
92
abertrand 37.2 93 La section** Aperçu** à droite permet d'avoir un aperçu du rendu du formulaire et de sauvegarder la configuration du champ.
abertrand 34.5 94
abertrand 23.1 95 [[image:Boite_composant.png||alt="Composant"]]
crandon 6.1 96
abertrand 34.4 97 (% class="box infomessage" %)
98 (((
99 ℹ Les onglets ainsi que les champs et options disponibles pour chacun d'eux diffèrent selon le le type de composant.
100 )))
101
102 * L'onglet **Affichage** permet de configurer l'aspect visuel du champ.
103 On retrouve notamment les éléments suivants :
abertrand 34.9 104 ** **Libellé** : Choix du libellé à afficher dans le formulaire (il sera aussi utilisé comme nom de la colonne de la table de données).
105 ** **Suggestion d'entrée / Description** : permet d'ajouter une description ou une aide pour ce champ afin d'aiguiller l'utilisateur lors de la saisie.
106 ** **Masqué** : permet de masquer le champ qui ne sera donc pas visible par l'utilisateur final mais qui sera quand même présent dans le formulaire.
abertrand 34.4 107
108 * L'onglet **Données** permet de configurer les données à afficher pour ce champ.
109 On retrouve notamment les éléments suivants :
abertrand 34.9 110 ** **Valeur par défaut **: permet de spécifier la valeur par défaut du formulaire
111 ** **Valeurs** : permet de spécifier les valeurs parmi lesquelles l'utilisateur pourra choisir (pour les champs de type liste déroulante, case à cocher...)
abertrand 34.4 112
113 * L'onglet **Validation** permet de configurer la validation de la donnée pour ce champ.
114 On retrouve notamment les éléments suivants :
abertrand 34.9 115 ** **Obligatoire **: permet de rendre obligatoire la saisie du champ par l'utilisateur. Le formulaire ne pourra être soumis tant que le champ sera vide.
116 ** **Unique** : permet de spécifier que la valeur de ce champ est unique et donc ne peut pas être saisie plusieurs fois par l'utilisateur. Si plusieurs champs ont ce paramètre activé, c'est la combinaison de tous les champs uniques qui est unique. Lors de l'édition du champ par l'utilisateur, si la valeur de celui-ci est déjà présente dans la base de données, alors le formulaire passe en mode édition et les autres champs seront remplis avec les valeurs stockées dans la base. Dans ce cas là, les données envoyées modifieront les données déjà présentes.
abertrand 34.4 117
crandon 6.1 118 * L'onglet **Conditionnel** permet de conditionner l'affichage de ce champ par rapport à la valeur d'un autre champ présent dans le formulaire.
abertrand 34.4 119
Aurelie Bertrand 65.1 120 * L'onglet **Logique** permet de réaliser une configuration avancée pour contrôler et manipuler de manière conditionnelle les paramètres des champs, le schéma JSON, les valeurs des données et les événements personnalisés. Il est possible, par exemple, de sécuriser le champ d'un formulaire. Consultez le paragraphe [[Sécurisation>>doc:||anchor="Sécurité_form"]] pour plus de détails.
crandon 6.1 121
Aurelie Bertrand 64.1 122 === Configurer un bouton Sauvegarder en tant que brouillon{{id name="Brouillon"/}} ===
abertrand 34.4 123
abertrand 34.9 124 Il est possible de créer un bouton permettant de sauvegarder un formulaire dans l'état ("brouillon") même si tous les champs, notamment les champs définis comme obligatoires, ne sont pas remplis. Pour cela :
abertrand 34.8 125
abertrand 34.9 126 1. Glissez-déposez un composant **Bouton** dans le formulaire.
127 ➡ La fenêtre de configuration du bouton s'affiche.
abertrand 34.10 128 1. Modifiez le **Libellé** comme souhaité : par exemple, //Sauvegarder en tant que brouillon//.
abertrand 34.11 129 1. Dans la liste déroulante **Action**, sélectionnez **Enregistrer dans l'état**.
130 1. Dans le champ **Enregistrer dans l'état** qui s'affiche, entrez //draft.//
abertrand 35.2 131 [[image:Composant_bouton_brouillon.png||alt="Bouton_brouillon"]]
abertrand 35.10 132 1. Configurez les autres champs/options si besoin.
133 1. Cliquez sur **Sauvegarder** pour valider la configuration du composant Bouton.
abertrand 34.9 134
Aurelie Bertrand 64.1 135 === Configurer une liste déroulante en fonction du nombre d'éléments{{id name="Liste"/}} ===
abertrand 35.3 136
abertrand 35.6 137 Lorsqu'une liste déroulante est liée à une dimension, la configuration diffère selon le nombre de membres de la dimension.
abertrand 35.4 138
abertrand 35.6 139 1. Glissez-déposez un composant **Liste déroulante **dans le formulaire.
140 ➡ La fenêtre de configuration du bouton s'affiche.
141 1. Modifiez le **Libellé** comme souhaité : par exemple, //Ville//.
142 1. Sélectionnez le **Type de Widget :**
143 1*. **ChoicesJS** est recommandé** **pour les dimensions avec un grand nombre d'éléments : il contient un champ de recherche pour rechercher un élément du côté du serveur.
abertrand 50.2 144 [[image:Widget_choiceJS.png||queryString="width=399&height=207" alt="Liste_choicesJS" height="207" width="399"]]
abertrand 35.6 145 1*. **HTML5** est recommandé pour les dimensions avec un petit nombre d'éléments : il ne contient pas de champ de recherche et, dans le cas où il y a beaucoup d'éléments, l'affichage peut être long ou les données peuvent être partielles.
abertrand 50.2 146 [[image:Widget_HTML5.png||queryString="width=427&height=99" alt="Liste_HTML5" height="99" width="427"]]
abertrand 35.8 147
148 (% class="box infomessage" %)
149 (((
150 Le nombre d'éléments affichés dans le champ de recherche est lié à la valeur définie pour **LIMIT_RESULT_SEARCHBOX** dans **Configuration -> Paramètres serveur -> Cubes -> Constantes**.
151 )))
152
153 (% start="4" %)
abertrand 35.10 154 1. Configurez les autres champs/options si besoin.
abertrand 37.2 155 1. Cliquez sur **Sauvegarder** pour valider la configuration du composant Liste déroulante.
abertrand 35.6 156
Aurelie Bertrand 86.1 157 === Configurer un affichage conditionnel relatif à plusieurs valeurs ===
158
159 Il est possible de créer une condition personnalisée afin d'afficher automatiquement une valeur en fonction d'autres valeurs.
Aurelie Bertrand 87.1 160 Par exemple,  nous disposons d'un formulaire contenant notamment un champ //Statut// et un champ //Nom du projet//. Nous souhaitons afficher la valeur "//Projet en cours//" dans un champ texte quand le statut est "//Actif//" et le nom du projet est //"Projet1"//. Pour cela :
Aurelie Bertrand 86.1 161
Aurelie Bertrand 90.1 162 1. Ajoutez un champ texte au formulaire.
163 1. Dans la fenêtre **Champ de texte Composant** qui apparaît, modifiez le **Libellé** comme souhaité puis allez dans l'onglet **Logique**.
164 1. Cliquez sur le bouton **Ajouter une logique** pour définir la condition.
165 1. Entrez le **Nom de la logique**.
166 1. Dans la zone **Déclencheur**, sléectionnez le **Type** //JSON Logic//.
167 1. Dans l'éditeur JSON Logic, entrez le code JSON suivant :
Aurelie Bertrand 86.1 168
Aurelie Bertrand 90.1 169 {{code language="JSON"}}
170 {
171 "and":[
172 {
173 "==":[
174 {
175 "var": "data.f_statut"
176 },
177 "actif"
178 ]
179 },
180 {"==": [{
181 "var": "data.f_nom_du_projet"
182 },
183 "Projet1"
184 ]
185 }
186 ]
187 }
188 {{/code}}
189
190 (% class="wikigeneratedid" %)
191 [[image:Condition_example_FR.png]]
192
193 (% class="wikigeneratedid" %)
194 Nous ajoutons ensuite l'action à effectuer quand la condition définie ci-dessous est remplie :
195
196 1. Dans la zone **Actions**, cliquez sur le bouton **Ajouter une action**.
197 1. Entrez le **Nom de l'action**.
198 1. Sélectionnez le type **Valeur**.
199 1. Dans l'éditeur Javascript, renseignez la valeur à afficher sous la forme :
200 [[image:Condition_example_action_FR.png||alt="Action"]]
201 1. Cliquez sur le bouton **Sauvegarder l'action** puis **Sauvegarder la logique**.
202 1. Sauvegardez enfin le champ.
203
abertrand 40.4 204 == Éditer / Supprimer un formulaire ==
abertrand 40.3 205
abertrand 40.2 206 Pour éditer ou supprimer un formulaire, cliquez droit sur le formulaire dans la section **Formulaires** du panneau de gauche puis sur **Editer** ou **Supprimer**.
abertrand 39.2 207
Aurelie Bertrand 80.1 208 [[image:Data_entry_form_menu_FR.png||alt="Editer/Supprimer formulaire"]]
abertrand 40.2 209
abertrand 34.6 210 = Ajouter un formulaire au tableau de bord =
crandon 6.1 211
slaurent 9.1 212 L'étape suivante consiste à ajouter le formulaire dans une page de tableau de bord. Pour cela, il vous suffit de glisser-déposer le formulaire nouvellement créé vers le contenu de la page de tableau de bord.
crandon 6.1 213
abertrand 40.6 214 La configuration des objets de type Formulaire se fait depuis le menu **Paramètres -> Propriétés**.** **
crandon 6.1 215
abertrand 40.6 216 == Lier un champ à une donnée ==
abertrand 40.4 217
abertrand 40.6 218 Il est possible de lier un champ du formulaire à une donnée présente dans le tableau de bord. Deux types de lien sont possibles :
abertrand 40.5 219
abertrand 40.7 220 * **lien vers une dimension **présente sur la page de tableau de bord. Cela permet de remplir automatiquement la valeur du champ si cette dimension est filtrée. Cela permet aussi de remplir les valeurs du champs par les membres de la dimension pour les champs à choix (liste déroulante, cases à cocher...).
221 * **lien vers un paramètre utilisateur**. Cela permet de remplir automatiquement la valeur du champ par la valeur du paramètre utilisateur de l'utilisateur connecté. Peut être utile pour les formulaires de type sondage afin de stocker l'utilisateur ayant répondu au formulaire.
abertrand 40.4 222
abertrand 40.7 223 Pour cela :
abertrand 40.4 224
abertrand 40.8 225 1. Cliquez sur **Aucun **à droite du nom du champ à lier.
abertrand 41.2 226 ➡ La boite **Lien **s'affiche.
227 1. Sélectionnez le **Type** de lien puis la **Dimension **ou l'**Attribut utilisateur** à lier.
abertrand 42.2 228 1. Cliquez sur **OK**.
Aurelie Bertrand 82.1 229 [[image:Data_entry_link_FR.png||alt="Lien"]]
abertrand 40.7 230
abertrand 41.2 231 == Afficher un aperçu des données ==
232
abertrand 42.2 233 L'option **Afficher un aperçu des données** permet d'afficher un aperçu des données telles quelles sont stockées dans la base de données tout en choisissant les champs à afficher (une colonne **Affichage** est ajoutée pour les champs du formulaire) . Cette interface permet aussi de gérer les données en donnant la possibilité de modifier ou supprimer une donnée.
abertrand 41.2 234
abertrand 50.2 235 [[image:Aperçu_données.png||queryString="width=735&height=249" alt="Aperçu_données" height="249" width="735"]]
abertrand 41.2 236
237 (% class="box infomessage" %)
238 (((
239 ℹ Cette interface n'est disponible que pour les utilisateurs ayant l'autorisation **Tableau de bord > Gérer les données de formulaire**.
240 )))
241
abertrand 43.1 242 == Configurer une action ==
crandon 6.1 243
Aurelie Bertrand 68.1 244 Le champ **Action **permet de configurer une action à exécuter après l'envoi du formulaire. Cela peut être utilisé, par exemple, pour rafraîchir le graphique en se basant sur les données du formulaire et ainsi visualiser les données nouvellement créées. Consultez la page [[Rafraîchir les flux après la saisie de données>>doc:.form_refresh_flow.WebHome]] pour en savoir plus.
abertrand 43.1 245
Aurelie Bertrand 98.1 246 == Configurer l'envoi d'un email{{id name="email"/}} ==
Aurelie Bertrand 93.1 247
Aurelie Bertrand 93.2 248 Il est possible de configurer l'envoi d'un email lors de la soumission d'un formulaire.
Aurelie Bertrand 93.1 249
Aurelie Bertrand 93.2 250 === Pré-requis ===
Aurelie Bertrand 93.1 251
Aurelie Bertrand 93.2 252 * Le [[serveur email >>doc:Digdash.deployment.configuration.configuration_guide.email.WebHome]]doit être configuré.
253 * L'utilisateur doit disposer de l'autorisation //Tableau de bord -> Envoyer un mail//.
Aurelie Bertrand 93.1 254
Aurelie Bertrand 93.2 255 === Configuration ===
Aurelie Bertrand 93.1 256
Aurelie Bertrand 93.2 257 La configuration s'effectue dans l'éditeur javascript :
258
259 1. Dans le menu utilisateur, sélectionnez **Paramètres** puis **Éditeur Javascript**.
Aurelie Bertrand 95.1 260 1. Ajoutez l'écouteur "formSubmitListener", qui sera déclenché une fois le formulaire soumis (après l'envoi au serveur), sous la forme suivante :
Aurelie Bertrand 93.2 261
Aurelie Bertrand 93.3 262 {{code language="js"}}
Aurelie Bertrand 93.2 263 ddCtrl.addFormSubmitListener(function(formId, formSubmission)
264 {
265 if (formId == "Identifiant du formulaire")
266 {
Aurelie Bertrand 95.1 267 var message = "Contenu du message";
268 var res = ddCtrl.sendMail ("destinataires (séparés par des virgules)", "sujet du mail", message);
Aurelie Bertrand 93.2 269 }
270 });
271 {{/code}}
272
Aurelie Bertrand 96.2 273 Le message peut contenir les valeurs des champs saisis par l'utilisateur via l'objet  "formSubmission.data" sous la forme : //formSubmission.data.f_nomduchamp.//
Aurelie Bertrand 93.2 274
Aurelie Bertrand 96.1 275 **Exemple**
Aurelie Bertrand 93.2 276
Aurelie Bertrand 96.1 277 Nous disposons d'un formulaire de sondage avec l'identifiant **Sondage** comportant les champs **Utilisateur** et **Outil**. Nous souhaitons envoyer un email aux destinataires avec les informations saisies pour ces champs dans un message.
278
Aurelie Bertrand 95.1 279 {{code language="js"}}
Aurelie Bertrand 93.3 280 ddCtrl.addFormSubmitListener(function(formId, formSubmission)
281 {
282 if (formId == "Sondage")
283 {
284 var message = "L'utilisateur '" + formSubmission.data.f_utilisateur + "' a répondu '" + formSubmission.data.f_outil + "' au sondage Outil préféré.";
285 var res = ddCtrl.sendMail("jean.dupont@mail.com,jean.dupond@mail.com", "Sondage", message);
286 }
287 });
288 {{/code}}
289
Aurelie Bertrand 98.1 290 À la soumission du formulaire, avec //Jean// saisi dans le champ **Utilisateur **et //DigDash// dans le champ **Outil**// , //les destinataires recevront un email avec l'objet **Sondage** et le message suivant : //**L'utilisateur 'Jean' a répondu 'DigDash' au sondage Outil BI préféré**.//
Aurelie Bertrand 94.1 291
abertrand 34.6 292 = Utiliser un formulaire =
crandon 6.1 293
294 Une fois l'objet Formulaire ajouté et configuré sur la page de tableau de bord, et la page sauvegardée, le formulaire devient accessible aux utilisateurs ayant accès à cette page et ayant l'autorisation **Tableau de bord > Ajouter des données via un formulaire**.
295
slaurent 9.1 296 Une fois les données saisies par l'utilisateur, celles-ci sont automatiquement sauvegardées dans la base de données. Si un rafraîchissement de la source de données est configuré, les nouvelles données sont rapatriées dans DigDash et seront donc disponibles dans le tableau de bord.
crandon 6.1 297
crandon 8.1 298 Il est aussi possible d'afficher le formulaire sous forme de popup, via l'utilisation de la fonction openFormInWindow paramétrable au niveau du graphique et dont la définition est disponible dans la documentation [[Fonctions Javascript>>doc:Digdash.customization.customization_DDE.customization_api.WebHome]].
299
abertrand 34.6 300 = Utiliser les données d'un formulaire =
crandon 12.1 301
302 Une fois le formulaire créé, la table de données est créée dans la base de données, ces données peuvent donc être exploitées par DigDash.
303
304 Pour cela, il vous suffit, via le Studio, de créer un modèle de données basé sur la table SQL nouvellement créée en choisissant la base qui a été choisie pour stocker les données des formulaires. Pour rappel, le nom de la table est l'identifiant du formulaire saisi par l'utilisateur.
305
306 Si la table est stockée dans notre base H2 embarquée, voici les identifiants de connexion permettant d'y accéder :
307
308 {{code language="text"}}
309 url : jdbc:h2:file:[répertoire de configuration de DigDash]\Enterprise Server\ddenterpriseapi\config\DDDataEntry;AUTO_SERVER=TRUE
310 identifiants : sa/sa
311 {{/code}}
312
313 Une fois le modèle de données créé, il est donc possible de créer des graphiques à partir de celui-ci.
abertrand 19.2 314
Aurelie Bertrand 60.1 315 = Sécurisation =
abertrand 19.2 316
Aurelie Bertrand 66.1 317 (% class="box warningmessage" %)
318 (((
319 ❗ **Code JSON Logic invalide**
320 \\L'entrée de code JSON invalide (conditions jamais vérifiées, erreur de typographie, etc) rend l'accès au formulaire impossible.
321 L'autorisation **Admin -> Gérer tous les formulaires** permet de pouvoir afficher le formulaire et corriger ce problème. Consultez la page [[Autorisations (ACL)>>doc:Digdash.deployment.configuration.administration.User_management.Authorization_management.acls.WebHome]] pour plus de détails.
322 )))
323
abertrand 31.1 324 == Sécuriser un formulaire{{id name="Sécurité_form"/}} ==
abertrand 24.1 325
abertrand 25.2 326 Pour sécuriser un formulaire, il est possible d'associer celui-ci à un rôle. Seuls les utilisateurs disposant du rôle défini pourront accéder au formulaire. Pour cela, sélectionnez le rôle auquel le formulaire est associé dans le la liste déroulante **Rôle**.
327 Si vous souhaitez laisser le formulaire visible pour tous les rôles, sélectionnez **Aucun**.
328
abertrand 55.1 329 Il est également possible de sécuriser un formulaire en fonction d'un profil utilisateur ou via un partage personnalisé. Pour cela, sélectionnez une des options de la liste déroulante **Partage** :
abertrand 46.2 330
abertrand 50.1 331 (% class="box infomessage" %)
332 (((
333 Dans le cas où un **Rôle **est sélectionné, seuls les utilisateurs ayant le rôle auront accès.
334 )))
abertrand 46.3 335
abertrand 50.1 336 * **Tous **: tous les utilisateurs auront accès au formulaire.
337 * **//Profil utilisateur//** : si des profils utilisateurs sont disponibles, vous pouvez sélectionner un profil utilisateur auquel restreindre l'accès au formulaire. Seuls les utilisateurs ayant ce profil utilisateur auront accès au formulaire.
abertrand 50.2 338 * **Personnalisé** : vous pouvez définir un partage personnalisé via l'utilisation de JSON Logic. Pour cela, cliquez sur le bouton [[image:1709631321085-490.png||queryString="width=17&height=18" height="18" width="17"]] et entrez le JSON Logic souhaité dans l'interface de **Partage personnalisé**. Par exemple, pour restreindre l'accès au formulaire aux utilisateurs ayant le profil utilisateur profil_A ou profil_B, on utilise :
Aurelie Bertrand 84.1 339 [[image:Data_entry_custom_share_FR.png||alt="Partage personnalisé"]]
abertrand 46.3 340
abertrand 50.1 341 Lorsqu'un utilisateur n'a pas accès à un formulaire :
342
abertrand 53.1 343 * le formulaire n'apparaît plus dans la liste **Formulaires **de l'éditeur de tableaux de bord.
344 * si le formulaire est ajoutée à une page de tableau de bord, une erreur s'affiche :
abertrand 50.2 345 [[image:Erreur_formulaire.png||queryString="width=563&height=315" alt="Erreur formulaire" height="315" width="563"]]
abertrand 50.1 346
Aurelie Bertrand 62.1 347 == Sécuriser un champ de formulaire{{id name="Sécurité_champ_form"/}} ==
abertrand 25.2 348
Aurelie Bertrand 61.1 349 === Selon un profil utilisateur ou un paramètre utilisateur ===
abertrand 25.2 350
abertrand 55.2 351 (% class="wikigeneratedid" %)
352 {{id name="Sécurité_champ_form"/}}Il est possible de sécuriser un champ de formulaire en fonction d'un profil utilisateur ou d'un paramètre utilisateur.
353
abertrand 28.1 354 Pour cela, on va configurer une logique dans l'onglet **Logique** de la fenêtre d'édition du composant.
abertrand 25.2 355
abertrand 31.1 356 Pour tester si l'utilisateur a le profil spécifié, un profil peut être utilisé sous la forme ${user.profile.profilename} dans le JSON Logic. Ce mot clé renvoie une valeur "true" ou "false".
abertrand 28.1 357 Pour tester le paramètre de l'utilisateur connecté, un paramètre utilisateur peut être utilisé sous la forme ${user.myparam} dans le JSON Logic.
358
abertrand 25.2 359 1. Entrez le **Nom de la logique**.
360 1. Dans la section **Déclencheur**, sélectionnez le type **JSON Logic**.
abertrand 45.1 361 1. Entrez le code JSON Logic. Par exemple :
abertrand 25.2 362
abertrand 44.1 363 {{code language="shell"}}
364 {
365 "==": [
366 "${user.profile.profil_A}",
367 "true"
368 ]
369 }
370 {{/code}}
abertrand 28.1 371
372 Dans cet exemple, le déclencheur est activé si l'utilisateur a le profil //profil_A. //
abertrand 25.2 373
abertrand 28.1 374 (% start="4" %)
375 1. Définissez ensuite l'action effectuée lorsque le déclencheur est activé.
abertrand 56.1 376 Dans cet exemple, si le déclencheur est activé alors la propriété "//Désactivé//" est définie à l'état "//Vrai//". Le champ du formulaire est alors en lecture seule.
abertrand 29.1 377 [[image:Exemple_action.png||queryString="width=493&height=477" alt="Exemple_action" height="477" width="493"]]
abertrand 30.1 378 1. Cliquez sur **Sauvegarder l'action **puis sur** Sauvegarder la logique.**
abertrand 25.2 379
Aurelie Bertrand 61.1 380 === Selon les données ===
abertrand 55.3 381
abertrand 56.1 382 Il est possible de sécuriser un champ de formulaire en fonction de la valeur d'une dimension ou mesure récupérée depuis un flux (graphique) ou un modèle de données.
abertrand 55.3 383
abertrand 58.1 384 Pour cela, on procède de la même façon que dans le paragraphe précédent mais avec du code JSON Logic utilisant l'identifiant du flux ou modèle de données, des filtres et une dimension ou mesure, pour définir le déclencheur.
abertrand 55.3 385
abertrand 56.1 386 **Exemple de JSON Logic basé sur un flux (graphique) **:
abertrand 55.4 387
abertrand 56.1 388 {{code language="JSON"}}
389 {
390 "==":
391 [
392 "${cube.value({\"flowId\":\"b312f6be\",\"filters\":[{\"dim\": \"Matériel\", \"member\":\"Samsung Galaxy\"}],\"res\":\"Type de ligne\"})}",
393 "Mobile"
394 ]
395 }
396 {{/code}}
abertrand 55.5 397
abertrand 56.1 398 dans lequel :
abertrand 55.5 399
abertrand 56.1 400 * **flowId**: identifiant du fllux dans lequel on va récupérer la donnée souhaitée.
401 * **filters**: filtres à appliquer sur le graphique pour n'avoir qu'une ligne de données renvoyée par le serveur.
402 * **res**: dimension ou mesure de la valeur que l'on souhaite récupérer.
403
Aurelie Bertrand 61.1 404 Si la valeur renvoyée par //"${cube.value({\"flowId\":\"b312f6be\",\"filters\":[{\"dim\": \"Matériel\", \"member\":\"Samsung Galaxy\"}],\"res\":\"Type de ligne\"})}" //est égale à la valeur souhaitée //"Mobile" //alors l'action est déclenchée.
abertrand 56.1 405
Aurelie Bertrand 59.1 406 (% class="box infomessage" %)
407 (((
408 ℹ Les antislash "\" sont utilisés dans le code JSON pour échapper les guillemets doubles " afin qu'ils ne soient pas interprétés comme la fin d'une chaîne de caractères. Cela permet au code JSON de conserver sa structure correcte et d'être interprété correctement par le système sans erreur.
409 )))
410
abertrand 56.1 411 **Exemple de JSON Logic basé sur un modèle de données **:
412
413 {{code language="JSON"}}
414 {
415 "==":
416 [
417 "${cube.value({\"dmId\":\"0b2583609f86d37754ce2ada372f31ae\",\"filters\":[{\"dim\": \"Matériel\", \"member\":\"Samsung Galaxy\"}],\"res\":\"Type de ligne\"})}",
418 "Mobile"
419 ]
420 }
421 {{/code}}
422
423 dans lequel :
424
425 * **dmId**: identifiant du modèle de données dans lequel on va récupérer la donnée souhaitée.
426 * **filters**: filtres à appliquer sur le modèle de données pour n'avoir qu'une ligne de données renvoyée par le serveur.
427 * **res**: dimension ou mesure de la valeur que l'on souhaite récupérer.
428
Aurelie Bertrand 61.1 429 Si la valeur renvoyée par //"${cube.value({\"dmId\":\"0b2583609f86d37754ce2ada372f31ae\",\"filters\":[{\"dim\": \"Matériel\", \"member\":\"Samsung Galaxy\"}],\"res\":\"Type de ligne\"})}" //est égale à la valeur souhaitée //"Mobile" //alors l'action est déclenchée.