Cette vidéo est actuellement en cours de traitement. S'il vous plait, réessayez dans quelques minutes.
(voir dans Mes vidéos)
Les applications paramétrées fonctionnent bien lorsque le nombre et les types de colonnes ne changent pas. L'utilisation d'App Builder avec de nombreuses plates-formes JMP nécessite une correspondance biunivoque entre le nombre et les types de colonnes utilisées pour créer initialement le rapport et les colonnes utilisées pour une analyse ultérieure. Dans de nombreux cas, cela est trop restrictif.
Pour contourner ce problème, il est possible de généraliser les applications afin que n'importe quel nombre ou type de colonnes puisse être utilisé, le cas échéant. Le plus gros inconvénient est que la boîte de dialogue intégrée pour la saisie utilisateur n'est plus disponible. Heureusement, App Builder facilite la création et l'utilisation d'une boîte de dialogue pour lancer une fenêtre de rapport.
Ingrédients:
- Générateur d'applications
- Gestion des expressions
Exemples de tableaux de données – Automobiles 1993, Villes
Difficulté – Difficile
Durée de la vidéo – 8:04
Pas
- Ouvrez l'application créée dans la recette Création d'une application paramétrée . L'exemple de table de données Cars 1993 s'ouvrira avec celui-ci car il a été utilisé pour créer la recette.
- Puisque nous n'utiliserons pas d'approche paramétrée, nous devrons créer notre propre boîte de dialogue pour la saisie de l'utilisateur. Commencez par ajouter un nouveau Module .
- Dans le panneau Propriétés , renommez Module en Dialog .
- Remplacez le type de rapport par Dialog . Cela supprime le menu en haut de la fenêtre de dialogue.
- Sous le plan d'entrée du panneau Sources , faites glisser un sélecteur de couleurs de filtre dans l'espace de travail. Remplacez le nom de la variable par clbAll .
- Ajoutez une boîte d'alignement .
- Faites glisser deux zones de liste de colonnes et deux zones de boutons dans la liste et disposez-les deux par deux, chaque ligne recevant un bouton suivi d'une zone de liste de colonnes . Le contour bleu à l'intérieur de la gamme indique où l'objet sera situé. Vous pouvez également placer un objet dans une zone de dépôt s'il existe. Une table de données doit être ouverte dans l'application actuelle pour que les zones Filter Col Selector et Col List soient disponibles.

- Remplacez la propriété Variable Name du premier bouton par btnY et le Title par Add Y .
- Remplacez les propriétés Name et Title de l'autre bouton par btnX et Add X , respectivement .
- Définissez le nom de variable de la première zone de liste sur clbY .
- Décochez tous les éléments sauf Continu pour Type de modélisation afin que seules les colonnes continues puissent être ajoutées.
- Remplacez le nombre minimum d'articles par 1 . L'indice à l'intérieur de la boîte passe de optionnel à obligatoire .
- Définissez Max Items sur 1 , limitant le nombre d'éléments pouvant être placés dans la boîte.
- Enfin, remplacez N Lines par 2 . Cela changera la hauteur de la boîte.
- Définissez le nom de variable de la deuxième liste de colonnes sur clbX et remplacez N Lines par 8 .
- Ajoutez une zone de liste V autour de la programmation .
- Faites glisser une nouvelle boîte de boutons à l'intérieur de la liste V pour qu'elle apparaisse en bas. Remplacez le nom du nouveau bouton par btnRemove et le titre par Remove Selected .
- Ajoutez une zone centrale H autour du bouton.
- Sélectionnez le sélecteur de colonnes de filtre et la zone de liste V entourant les autres éléments. Faites un clic droit et ajoutez une zone de liste H. Cliquez avec le bouton droit sur la zone la plus à l'extérieur et sélectionnez Déplacer vers le coin .
- Ajoutez deux boutons avec les titres Run et Cancel renommant respectivement leurs variables btnRun et btnCancel .
- Placez-les dans une H List Box , puis dans une H Center Box .
- Sélectionnez la zone centrale H et la zone de liste H contenant les autres objets et ajoutez-les à une zone de liste V.

Maintenant que la boîte de dialogue est créée, ajoutons des fonctionnalités aux boutons.
- Sélectionnez le bouton Annuler . Faites défiler vers le bas du panneau Propriétés . La dernière propriété, Press , est associée au script du bouton. Un script peut être ajouté directement dans la zone de saisie à droite ou, si plus d'espace est nécessaire, cliquer sur le bouton à trois points ouvre une fenêtre avec plus d'espace. C'est l'un des deux emplacements où les scripts d'objet peuvent être localisés.
- Use the following code for the button:
(thisModuleInstance << Get Box) << Close Window;
La référence d’espace de noms thisModuleInstance est nécessaire pour que le bouton Annuler fonctionne. Chaque module crée sa propre référence d'espace de noms avec le même nom. Leur portée ne s'étendant pas en dehors du module auquel ils sont associés, ils peuvent tous porter le même nom. Il est important de le reconnaître lorsque vous travaillez avec plusieurs modules. Le message Get Box est utilisé pour obtenir une référence à la fenêtre de dialogue et Close Window pour la fermer.
- Sélectionnez le bouton Ajouter Y. Faites un clic droit et sélectionnez Scripts > Appuyez en bas. Cela crée un nom par défaut pour le script, l'ajoute à la propriété Press du bouton Exécuter et ajoute un shell de script dans l'onglet Scripts , le deuxième endroit où un script peut être localisé. Le nom du script dans le panneau Propriétés doit être identique à celui du script dans l'onglet Scripts pour qu'il fonctionne correctement.
- Répétez cette opération pour les boutons Ajouter X et Supprimer la sélection .
- Accédez à l'onglet Scripts . Supprimez les commentaires et le code par défaut qui ont été ajoutés aux scripts. L'argument thisBox est une référence à l'objet auquel le script est associé. Toutes les propriétés du script App Builder utilisent thisBox comme premier argument. Il est facultatif et peut être supprimé s’il n’est pas utilisé et qu’aucun autre argument n’est nécessaire.
- For the Add Y button script, add the following line:
clbY << Append(clbAll << Get Selected)
Cela entraînera l'ajout de ce qui est sélectionné dans le sélecteur de colonne de filtre à la zone de liste Y.
- Ajoutez le même script pour le bouton Ajouter X en remplaçant clbY par clbX .
- Use the following two lines for the Remove Selected button:
clbY << Remove Selected;
clbX << Remove Selected;
- Add a script for the Run button. Use the following code:
If(N Items(clbY << Get Items) > 0 & N Items(clbX << Get Items) > 0,
(thisModuleInstance << Get Box) << Close Window;
thisApplication:Report << Create Instance(clbY << Get Items,clbX << Get Items);
)
L'instruction If vérifie qu'il y a au moins un élément dans les zones de liste X et Y col. Si cette condition est remplie, la ligne 2 ferme la fenêtre de dialogue et la ligne 3 lance le module rapport. thisApplication est l'espace de noms utilisé par l'application qui s'étend à tous les objets et variables qui y sont créés. Dans ce cas, il est utilisé pour référencer le module de rapport et il est facultatif. Créer une instance est le message utilisé pour lancer un module. Ses arguments sont transmis à la fonction OnModuleLoad du module lancé. Nous passerons le contenu de la List Box dans laquelle l'utilisateur sélectionne les colonnes d'analyse.
- Sélectionnez le module et renommez-le en Report . Décochez Lancement automatique en bas à droite pour l’empêcher de se lancer au démarrage de l’application.
- Supprimez les trois rapports qui se trouvent actuellement dans le rapport. Nous utiliserons JSL pour les construire au moment de l'exécution, une fois que l'utilisateur aura sélectionné les colonnes d'analyse.
- Renommez les zones de page à onglet tpbDistribution , tpbFitYbyX et tpbScatter .
- To finish building the application, navigate to the Report section of the Scripts tab. It can be found by selecting the Scripts tab and choosing Report using the combo box at the top. We used Create Instance in the Dialog module script to launch the report and pass it the analysis columns. A module receives any arguments in its OnModuleLoad function. This happens before any of the report visuals are rendered. The following code will receive the passed variables and assign them variables local to the module (i.e., in the thisModuleInstance namespace for report).
OnModuleLoad({yCols,xCols},
allCols = Insert(yCols,xCols);
yVars = yCols;
xVars = xCols;
);
La variable allCols combine les variables X et Y pour la plateforme Scatterplot.
- The Ajouter function will be used to add the platforms to the appropriate Tab Page Boxes.
tpbDistribution << Append();
tpbFitYbyX << Append( );
tpbScatter << Append()
- Working from the saved scripts from the Parameterized Application recipe, copy and paste the Scatterplot Matrix code into the Ajouter function for tpbScatter. Delete the list of hard coded column names and replace them with Éval (tous les cols).
tpbScatter << Append(
Scatterplot Matrix(
Y( Eval(allCols) ),
)
)
- We will use an alternative form for the Distribution platform:
tpbDistribution << Append(
Distribution(
Y(Eval(allCols))
)
);
L'avantage de cette approche est qu'il n'est pas nécessaire de spécifier les types de modélisation pour les colonnes d'entrée, ce qui rend le code beaucoup plus simple.
- We will also use an alternative for Ajuster Y par X
tpbFitYbyX << Append(
Fit Y by X(
Y( Eval(yVars)),
X( Eval(xVars) )
) << Fit Line << ANOVA;
);
En plus de ne pas avoir à modifier l'appel de la plateforme pour les différents types de modélisation, les messages Fit Line et ANOVA peuvent tous deux être utilisés, ce qui rend le code plus compact.
Vous pouvez tester l’application avec l’exemple de table de données Villes . Même si vous êtes limité à une seule colonne de réponse, le nombre et les types de modélisation des colonnes X ne sont pas limités.