Comment afficher une zone de texte demandant une saisie à l'utilisateur ?Salut,
J'essaie de créer un script de base qui analyse mes données.
Lorsque j'appuie sur la vignette liée au script, je veux qu'elle
1. Demandez à l'utilisateur de saisir les plages
2. Créez un tableau de données qui montre le maximum et le minimum
3. Génère un graphique avec le min, le max et la cible.
Jusqu'à présent, tout ce que je peux faire est d'obtenir le script du tableau de données ou du graphique et de l'incorporer séparément dans les raccourcis de JMP. Je n'arrive pas à comprendre comment le faire générer une boîte de requête pour l'utilisateur et je ne parviens pas à incorporer le graphique et le tableau de données ensemble. Pouvez-vous nous conseiller un ensemble de didacticiels de base qui pourraient vous aider ?
Cordialement,
Élaina
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Salut Jarmo,
Merci encore! Encore une question : pourquoi mon script fonctionne-t-il lorsque j'utilise userFirstName et userLastName mais ne fonctionne pas lorsque j'utilise b1,b2 dans le texte de la chaîne de définition du chemin de fichier :
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window( "Defining User Name", <<MODAL></MODAL>
Meilleur,
En retard
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Vous obtenez cette erreur car vous utilisez la fenêtre modale et vous la fermez "trop tôt". Les fenêtres modales sont des types spéciaux de fenêtres qui nécessitent essentiellement l'utilisation de titres de boutons spécifiques. Guide de script > Afficher les arbres > Fenêtres modales en JSL > Construire une fenêtre modale
Note: Les fenêtres modales nécessitent au moins un bouton pour fermer la fenêtre. Vous pouvez utiliser D'ACCORD , Oui , Non , ou Annuler pour étiqueter les boutons de la fenêtre modale. Si vous n'incluez pas au moins un de ces boutons dans une fenêtre modale, JMP ajoute un D'ACCORD bouton.
Supprimez le w << closeWindow; à partir de vos boutons Mettre à jour la chaîne. Si vous souhaitez fermer la fenêtre lorsque vous appuyez sur ce bouton (vous aurez un bouton OK inutile), ajoutez le bouton OK, puis envoyez-lui un message de clic. Je pense que tu peux même masquer le bouton OK si tu le souhaites
Names Default To Here(1);
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window("prototype",
<<MODAL></MODAL>
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Salut Jarmo,
Merci! Cela a fonctionné à merveille ! Cependant, je suis maintenant confronté à deux autres problèmes. Si je peux les décrire :
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window( "prototype", <<MODAL></MODAL>
Tout d’abord, appuyer sur les chaînes de mise à jour génère la bonne table, mais génère également une erreur :

Deuxièmement, le script "fonctionne", c'est-à-dire qu'il effectue l'importation de plusieurs fichiers si j'utilise les variables userFirstName & userLastName, mais ne fonctionne pas si j'utilise b1, b2 dans la chaîne de concaténation. Je suppose que la partie que j'utilise pour définir les variables b1, b2 (à l'aide de la zone d'édition de texte) est locale. Les variables b1, b2 ne continuent-elles pas à exister dans le script restant ? Si tel est le cas, comment puis-je les faire exister en tant que variables globales.
Comment puis-je me débarrasser de l'erreur ? Cela semble être dû au fait que j'ai ajouté une clause << modale à la fenêtre. Mais je dois le faire pour mettre le script en pause et permettre à l'opérateur de vérifier que son nom saisi était correct.
Idéalement, le flux de travail que j'essaie de créer est :
l'utilisateur exécute le script
Le script affiche une boîte de dialogue contextuelle demandant à l'utilisateur de définir son prénom et son nom.
Le script permet à l'utilisateur de vérifier que son entrée est correcte (afficher le filePathString serait meilleur que la sortie actuelle)
Le script, une fois que l'utilisateur a cliqué sur ok, continue et utilise les nouvelles variables dans plusieurs filePathStrings différents.
Il existe de nombreuses autres façons d'incorporer une zone de texte de saisie de données dans ce script à mes fins, donc toute aide serait grandement appréciée.
Merci,
En retard
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Vous obtenez Envoyer là car c'est ce qui est "évalué" dans la table (<< signifie Envoyer() ) Très probablement, il suffira simplement d'envelopper votre liste avec Eval List() pour évaluer les valeurs qui s'y trouvent
Names Default To Here(1);
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window("prototype", // opens a window with a title and this content...
Border Box(top(20), bottom(20), Left(20), Right(20), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box(Text Box("Report Generator")), // a second title, centered
Spacer Box(size(1, 30)), // a little vertical space
H List Box(Text Box("First Name: "), b1 = Text Edit Box(userFirstName)), // data entry
Spacer Box(size(1, 10)), // a little vertical space
H List Box(Text Box("Last Name: "), b2 = Text Edit Box(userLastName)), // more data entry
Spacer Box(size(1, 30)), // a little vertical space
H Center Box( // center the button
Button Box("Update Strings", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table("StringCheck",
New Column("Name",
Character,
Set Values(Eval List({b1 << get text(), b2 << get text()}))
)
);
// optionally, close the dialog. Or, you might want to run it again...
w << closeWindow; // just the dialog, not the report
)
)
)
)
);
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Salut Craige,
J'espère que répondre à un ancien fil de discussion est acceptable. Je souhaite créer des variables à utiliser comme chaînes plus tard dans un script (répertoires utilisateur pour l'importation de fichiers qui changent en fonction de l'utilisateur) - j'essaie d'adapter votre script pour y parvenir.
L'idée est que les variables sont d'abord créées avec des valeurs par défaut. Ensuite, la zone de saisie apparaît, l'utilisateur modifie les valeurs, le script continue et utilise les variables désormais mises à jour dans une importation.
//Import multiple files
Multiple File Import(
<<SET folder=""></SET>
Donc ci-dessous viendra en premier dans le script :
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window( "prototype", // opens a window with a title and this content...
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box( Text Box( "Report Generator" ) ), // a second title, centered
Spacer Box( size( 1, 30 ) ), // a little vertical space
H List Box( Text Box( "First Name: " ), b1=Text Edit Box( userFirstName ) ), // data entry
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Last Name: " ), b2=Text Edit Box( userLastName ) ), // more data entry
Spacer Box( size( 1, 30 ) ), // a little vertical space
H Center Box( // center the button
Button Box( "Update Strings", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table( "StringCheck", New Column( "Name", Character, Set Values( {b1<< get text(), b2 << get text()} ) ) );
// optionally, close the dialog. Or, you might want to run it again...
w << closeWindow; // just the dialog, not the report
)
)
)
)
);J'obtiens avec succès la fenêtre de saisie des données et une table appelée StringCheck avec une colonne de caractères "Nom" - cependant les deux valeurs sont "Envoyer":

J'ai essayé plusieurs choses différentes pour que cela fonctionne, mais je n'arrive pas à comprendre d'où vient "Envoyer".
Toute aide appréciée, merci,
En retard
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Hum. Je me demande si j'ai testé ce JSL. NumberEditBox ne met pas à jour la variable v1/v2 lorsque le champ est modifié, le rapport est donc toujours le même. Voici ce que cela devrait être :
v1 = 30; // two numbers with default
v2 = 40; // values; these will go in a data table
w = New Window( "prototype", // opens a window with a title and this content...
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box( Text Box( "Report Generator" ) ), // a second title, centered
Spacer Box( size( 1, 30 ) ), // a little vertical space
H List Box( Text Box( "value 1: " ), b1=Number Edit Box( v1 ) ), // data entry
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "value 2: " ), b2=Number Edit Box( v2 ) ), // more data entry
Spacer Box( size( 1, 30 ) ), // a little vertical space
H Center Box( // center the button
Button Box( "make report", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table( "Untitled", New Column( "a", Set Values( {b1<<GET></GET>
Avec les variables supplémentaires b1 et b2 pour mémoriser les cases, et le message <
The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.Le rapport n’est créé qu’après avoir appuyé sur le bouton. Licence artistique.
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Il semble y avoir une autre instance de ce fil ici . Veuillez également consulter la réponse que j'ai postée ici.
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.Vous pouvez créer une boîte de dialogue modale ou non modale dans JMP avec votre invite personnalisée.
Les boîtes de dialogue modales ne vous permettront pas de faire autre chose tant que vous ne les aurez pas terminées. http://www.jmp.com/support/help/Modal_Windows.shtml
Les boîtes de dialogue non modales vous permettent de travailler dans d'autres fenêtres et de revenir plus tard à la fenêtre non modale : http://www.jmp.com/support/help/Constructing_Display_Trees.shtml#259363
Un prototype non modal de ce que vous décrivez pourrait ressembler à ceci :
v1 = 30; // two numbers with default
v2 = 40; // values; these will go in a data table
w = New Window( "prototype", // opens a window with a title and this content...
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box( Text Box( "Report Generator" ) ), // a second title, centered
Spacer Box( size( 1, 30 ) ), // a little vertical space
H List Box( Text Box( "value 1: " ), Number Edit Box( v1 ) ), // data entry
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "value 2: " ), Number Edit Box( v2 ) ), // more data entry
Spacer Box( size( 1, 30 ) ), // a little vertical space
H Center Box( // center the button
Button Box( "make report", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table( "Untitled", New Column( "a", Set Values( {v1, v2} ) ) );
// launch a platform to analyze the data...
dt << Distribution( Continuous Distribution( Column( :a ), Quantiles( 0 ), Summary Statistics( 0 ), Vertical( 0 ), Outlier Box Plot( 0 ) ) );
// optionally, close the dialog. Or, you might want to run it again...
w << closeWindow; // just the dialog, not the report
)
)
)
)
);
Prototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogBoîte de dialogue Prototype
Re : Comment afficher une zone de texte demandant la saisie de l'utilisateur.b1 et b2 ne stockent pas les valeurs, ce sont simplement des références à vos boîtes d'affichage. Et lorsque vous fermez votre fenêtre modale, vous perdrez l’accès à celles-ci. Vous pouvez stocker les valeurs en appuyant sur le bouton
Names Default To Here(1);
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window("Defining User Name",
<<MODAL></MODAL>
b1_val et b2_val. Et si vous utilisez quelque chose comme ça, vous devriez également les utiliser lorsque vous ajoutez des valeurs à votre table.