JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesSalut tout le monde,
J'essaie de créer un script qui fonctionnerait de cette façon :
1. Ouvre une nouvelle fenêtre affichant "Sélectionnez les paramètres que vous souhaitez tracer" avec une liste de paramètres avec une case à cocher pour chacun, et l'opérateur choisira ceux qu'il souhaite tracer en les cochant.
2. Ensuite pour ceux qui sont cochés, ouvrez un générateur de graphiques avec les variables correspondantes.
Je suis actuellement capable de faire la première étape (nouvelle fenêtre et liste avec cases à cocher), et je sais scripter pour créer un graphique, mais il me manque le lien entre eux...Je pensais au départ appeler chaque case à cocher individuellement puis faire une succession de "si" comme "si cb1 est coché, alors faire le graphique, sinon, alors si cb2 est coché etc...". J'ai essayé le script suivant pour m'entraîner mais il affiche toujours "Échec" à la fin, peu importe si j'ai coché la case, donc il ne coche pas vraiment la case :
Names Default To Here( 1 );
New Window( "Choose the parameters to be plotted",
cb1 = Check Box ("Parameter 1",0),
cb2 = Check Box ("Parameter 2",0)
);
wait(5);
If (cb1 == 1,
Graph Builder(
Variables(
X( :Name( "Process duration" ) ),
Y( :Name( "Parameter 1" ) ) ) ),
New Window( "Failed"));Avez-vous une idée de comment faire ça ?
@martindemel
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesDésolé. Pendant ce temps, j'ai également félicité Mark.Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesbravo à Mark
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesMerci Martin, pour ce script utile.Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesJe viens de tester cette solution et elle a parfaitement fonctionné, merci !!Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesExemple:
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dialog = Column Dialog(
col = Col List( "X, Factor", Min Col( 1 ), Max Col( 1 ) )
);
If( dialog["Button"] == -1, Throw( "User cancelled" ) );
Remove From( dialog );
Eval List( dialog );
x = col[1];
dt << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables( X( x ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 3 ) ) )
);
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesje ne suis pas sûr de comprendre
Je vois l'intérêt d'utiliser la boîte de dialogue de colonne pour demander à l'opérateur de sélectionner la colonne, mais je ne sais toujours pas comment lier cela à la création automatique de graphiques après ?Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesok, c'est logique. Même dans ce cas, vous pouvez utiliser la boîte de dialogue de colonne, même si vous devez ensuite ajuster légèrement votre script pour utiliser le nom de variable correct. Ce qui est bien, c'est que vous pouvez utiliser un nom de variable auto-défini que vous souhaitez utiliser plus loin dans votre script et supprimer la dépendance sur les noms de variables de la table. Vous pouvez toujours créer une structure if_else, mais au lieu de :age, vous pouvez utiliser votre propre nom, ce qui rend le script plus général et généralement plus robuste.Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesLa méthode Choose() que j'ai utilisée est appropriée pour Radio Box, mais pas aussi utile pour le cas de saisie Check Box - elle ne permet d'exécuter qu'une seule des instructions.
Essayez quelque chose comme :
If(cb<<GET></GET>
Notez que CheckBox<
http://www.jmp.com/support/help/en/15.1/#page/jmp/display-functions.shtml#ww2548850
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesSalut Martin,
En fait, je n'ai pas mentionné l'image complète : j'ai déjà un script qui construit tous les graphiques un par un, les enregistre dans le journal puis ferme le générateur de graphiques. Donc à la fin de ce script, j'ai un journal avec tous mes graphiques.
Maintenant, je voudrais ajouter une première étape à ce graphique qui est la sélection des variables. J'ai donc besoin que l'opérateur sélectionne ce qu'il veut, puis pour toutes les variables sélectionnées, le deuxième générateur de graphiques de script -> Journal devrait s'appliquer.
Cela a-t-il du sens?
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesCe n'est peut-être pas exactement ce dont vous avez besoin, mais si vous souhaitez créer un graphique pour chacune des variables sélectionnées, vous pouvez envisager une boîte de dialogue en colonne pour permettre à l'opérateur de sélectionner les variables qu'il souhaite tracer dans les rôles X et Y, puis de les tracer pour chaque variable sélectionnée :
https://www.jmp.com/support/help/en/15.1/?os=win&source=application#page/jmp/construct-a-column-dialog.shtml#
Names Default to Here(1);
dt = Open("$SAMPLE_DATA/Tablet Production.jmp", Invisible);
cdb = Column Dialog("Add continuous variables you want to plot against Dissolution" ,
colxx = ColList( "X", Min Col( 1 ), Modeling Type( "Continuous" ) ),
);
show(cdb);
Eval List(cdb[1::N Items(cdb)-1]);
Graph Builder(
Size( 526, 454 ),
Show Control Panel( 0 ),
Variables( X( colxx[1] ), Y( :Dissolution )),
Elements( Points( X, Y, Legend( 3 ) ), Line Of Fit( X, Y, Legend( 5 ) ) ),
Column Switcher( colxx[1], colxx )
);
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesJ'ai essayé de changer la case radio en case à cocher dans votre exemple, mais encore une fois, cela ne fait qu'un seul graphique même si plusieurs cases sont sélectionnées (et en fait, cela ne fonctionne pas pour la hauteur et je ne sais pas pourquoi)... Je pense qu'il me manque encore quelque chose dans ce script :
Names Default To Here( 1 );
dt=Open("$SAMPLE_DATA/Big Class.jmp");
rc = New Window("Choose the parameters to be plotted",
cb = Check box ({"weight", "height", "sex"}),
Button Box("Ok",
Choose(cb<<GET></GET>
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesDans ce cas, vous pouvez conserver le Case à cocher() affiche que vous utilisiez à l'origine - votre exemple ne comprenait pas clairement comment les entrées allaient être utilisées si les deux éléments (ou aucun d'eux) étaient cochés.RadioBox est un contrôle intéressant si vous souhaitez une et une seule réponse, mais vous pouvez utiliser l'une ou l'autre des méthodes de saisie avec n'importe quel ensemble de contrôles, y compris TextEditBox() pour la saisie de chaîne ou NuméroEditBox() pour la saisie numérique.
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesCela semble prometteur merci beaucoup !! Or dans ce que vous proposez, c'est soit une case, soit l'autre mais pas les deux, alors que j'aimerais avoir autant de cases cochées que nécessaire... Que dois-je changer dans vos scripts ?
Re: JSL - Case à cocher pour sélectionner une variable à tracer ensuite dans le générateur de graphiquesLorsque vous demandez une entrée dans une boîte de dialogue, voici deux manières courantes de procéder :
1. Utilisez une boîte de dialogue modale pour suspendre l'exécution du script en attendant une entrée :
Names Default To Here( 1 );
dt=Open("$SAMPLE_DATA/Big Class.jmp");
// Prompt for the input
rc = New Window("Choose the parameters to be plotted",
<<MODAL></MODAL>// Launch report if Ok was pressed
if (rc["Button"] == 1,
// Ok pressed
Choose (rc["rb"],
Graph Builder(Variables(X(:age), Y(:weight))),
Graph Builder(Variables(X(:age), Y(:height)))
);
,
// Cancel
"Cancel"
)
Dans votre script, la variable "cb1" est une DisplayBox.Dans cet exemple, l'option <
2. Effectuez la partie « action » de la boîte de dialogue dans le cadre d'un script de bouton :
Names Default To Here( 1 );
dt=Open("$SAMPLE_DATA/Big Class.jmp");
// Prompt for the input and create graph
rc = New Window("Choose the parameters to be plotted",
rb = Radio Box({"weight", "height"}),
Button Box("Ok",
Choose(rb<<GET></GET>
Une boîte de dialogue modale bloquera toutes les autres entrées dans d'autres fenêtres, tandis que la deuxième approche vous permettra de continuer à utiliser d'autres fenêtres dans JMP en même temps.
J'espère que cela pourra aider!
Re: JSL - Case à cocher pour sélectionner la variable à tracer dans le générateur de graphiquesSimple et efficace. Sympa !