Salut, j'essaie depuis un moment d'écrire un code en JSL où, en fonction de la valeur de certaines variables, le graphique obtenu à partir du générateur de graphiques change.
Mon exemple particulier pour le moment est assez simple, j'ai une case à cocher et en fonction de la sélection de l'utilisateur (cochée / décochée), je veux ajouter ou supprimer des groupes dans le graphique en utilisant le filtre local. Voici un exemple très simple
dt = Open( "$SAMPLE_DATA/Analgesics.jmp" );
// Open Analgesics
cb = 1; // Predefined value<BR /><BR />// Check box to Remove group A from the graph
usw = New Window("Ignore A?", << Modal,
//Check Box defaulted to checked ignore
checkIgnore = check box({"Ignore A?"},
<< Set(1,1),
cb = checkIgnore << Get())
);
// Answer to Cancel or close buttons
If( usw["button"] == -1, throw("User cancelled") );
show(cb); // I can see how the value of cb changes between 0 and 1
nw = New Window( "Example Report",
// Box plot with dots
dot_box_plot = dt << Graph Builder(
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 0 ),
Variables( X(:drug ), Y( :pain ), Color(:drug ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 2 ) ), Box Plot( X, Y, Legend( 3 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 2 ) ), Box Plot( X, Y, Legend( 3 ) ) ),
SendToReport( Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ) ),
/* This is the part that I'd like to make interactive
to keep or remove A-group from the plot depending on
user selection */
if(cb == 1,
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :drug ),
Where( :Drug != "A" )
)
)
)
)
);Comme vous pouvez le voir, il devrait y avoir quelque chose qui ne va pas dans ma partie avec l'instruction if car rien ne change, l'intrigue conserve tous les groupes. Et bien sûr, lorsque je supprime uniquement la partie IF (), mon intrigue ignore le groupe A.
Je serais très reconnaissant pour toute suggestion.
La meilleure façon de gérer les modifications du code de la plate-forme est de transmettre des messages à la plate-forme après le traitement initial de la plate-forme.Tenter de modifier les instructions de la plate-forme devient trop compliqué et trop erratique.
Vous trouverez ci-dessous votre script modifié pour ajouter le filtre après l'exécution de la plate-forme Graph Builder.Et puis pour masquer l'affichage réel du filtre de données local

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Analgesics.jmp" );
// Open Analgesics
cb = 1; // Predefined value// Check box to Remove group A from the graph
usw = New Window( "Ignore A?",
<<MODAL></MODAL>