Hola, he estado intentando durante un tiempo escribir un código en JSL donde, dependiendo del valor de cierta variable, el gráfico obtenido del generador de gráficos cambia.
Mi ejemplo particular en este momento es bastante simple, tengo una casilla de verificación y, según la selección del usuario (marcada / desmarcada), quiero agregar o eliminar grupos en el gráfico usando el filtro local. Aquí hay un ejemplo muy 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" )
)
)
)
)
);Como puede ver, debería haber algo mal en mi parte con la declaración if porque nada cambia, la trama mantiene todos los grupos. Y, por supuesto, cuando elimino solo la parte IF (), mi trama ignora el grupo A.
Estaría muy agradecido por cualquier sugerencia.
La forma preferida de manejar las modificaciones al código de la plataforma es pasar mensajes a la plataforma después del procesamiento inicial de la plataforma.Intentar modificar las declaraciones de la plataforma se vuelve demasiado complicado y errático.
A continuación se muestra su secuencia de comandos modificada para agregar el filtro después de que se haya ejecutado la plataforma Graph Builder.Y luego para ocultar la visualización real del filtro de datos locales

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>