Hallo, ich habe eine Weile versucht, einen Code in JSL zu schreiben, bei dem sich je nach Wert einer bestimmten Variablen das vom Graph Builder erhaltene Diagramm ändert.
Mein aktuelles Beispiel ist ziemlich einfach. Ich habe ein Kontrollkästchen und möchte je nach Benutzerauswahl (aktiviert / deaktiviert) Gruppen mithilfe des lokalen Filters zum Diagramm hinzufügen oder daraus entfernen. Hier ist ein sehr einfaches Beispiel
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" )
)
)
)
)
);Wie Sie sehen können, sollte in meinem Teil etwas mit der if-Anweisung nicht stimmen, da sich nichts ändert und die Handlung alle Gruppen behält. Und wenn ich nur den IF () - Teil entferne, ignoriert mein Plot natürlich die Gruppe A.
Für Anregungen wäre ich sehr dankbar.
Die bevorzugte Methode zum Behandeln von Änderungen am Plattformcode besteht darin, Nachrichten nach der ersten Verarbeitung der Plattform an die Plattform zu übergeben.Der Versuch, die Plattformanweisungen zu ändern, wird zu chaotisch und zu unberechenbar.
Im Folgenden wird Ihr Skript geändert, um den Filter hinzuzufügen, nachdem die Graph Builder-Plattform ausgeführt wurde.Und dann, um die tatsächliche Anzeige des lokalen Datenfilters auszublenden

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>