Hola, llevo un tiempo intentando 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í tienes un ejemplo muy sencillo.
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 algún problema por 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 gráfico ignora el grupo A.
Estaría muy agradecido por cualquier sugerencia.
Hola Jim, necesito ayuda con mi guión más avanzado hasta el momento. En pocas palabras, el script le pedirá al usuario que ingrese un número de registro entre 1 y 5.
el script no hace nada cuando agrego una declaración while o if. Si agrega una expresión solo sin la instrucción while o if, funciona bien.
pero estoy tratando de trabajar a medias para registros múltiples, normalmente obtengo archivos para registros individuales y quería usar un solo script para cubrir las 5 variedades.
gracias de antemano.
Sam
guión completo a continuación
w = Nueva Ventana( "Ingrese el número de Registro a Analizar", // abre una ventana con un título y este contenido...
Cuadro de borde (arriba (20), abajo (20), izquierda (160), derecha (160), // escaparate
V List Box( // Las listas V y H se anidan para organizar los cuadros de visualización
H Cuadro central (cuadro de texto ("Escriba el número de registro a continuación")), // un segundo título, centrado
Caja espaciadora (tamaño (1, 10)), // un pequeño espacio vertical
// Cuadro de lista H (cuadro de texto ("valor 1: "), cuadro de edición de números (v1)), // entrada de datos
H Cuadro de lista (cuadro de texto ("Ingrese el número de registro:"), Register_Num_teb = cuadro de edición de texto ("", <
Caja espaciadora (tamaño (1, 10)), // un pequeño espacio vertical
H Center Box( // centrar el botón
Button Box( "Continuar", // este script se ejecuta cuando se presiona el botón...
Registro = Register_Num_teb << obtener texto();
// crea una nueva tabla con los valores...
////////////////////////////////////////////////// //////////////////////////////////////////iniciar el bucle
Mientras( Registro == 1,
hacer esto = Expr(
Nueva columna ("start_time", numérica, continua, fórmula ((:rise_time_scope_v_vout * 1000)/0,8))
);
hacer esto;
dt << MoveSelectedColumns( {:start_time}, Después( :Register1_active ) );
hacer esto = Expr(
Nueva columna ("SoftStart_Accuracy%",
Numérico,
Continuo,
Fórmula (((:Register1_tsoftstart - :start_time) / :Register1_tsoftstart) * 100 )
)
);
hacer esto;
dt << MoveSelectedColumns( {:SoftStart_Accuracy%}, Después( :start_time ) );
);
Mientras( Registro == 2,
hacer esto = Expr(
Nueva columna ("start_time", numérica, continua, fórmula ((:rise_time_scope_v_vout * 1000)/0,8))
);
hacer esto;
dt << MoveSelectedColumns( {:start_time}, Después( :Register2_active ) );
hacer esto = Expr(
Nueva columna ("SoftStart_Accuracy%",
Numérico,
Continuo,
Fórmula (((:Register2_tsoftstart - :start_time) / :Register2_tsoftstart) * 100 )
)
);
hacer esto;
dt << MoveSelectedColumns( {:SoftStart_Accuracy%}, Después( :start_time ) );
);
Mientras( Registro == 3,
hacer esto = Expr(
Nueva columna ("start_time", numérica, continua, fórmula ((:rise_time_scope_v_vout * 1000)/0,8))
);
hacer esto;
dt << MoveSelectedColumns( {:start_time}, Después( :Register3_active ) );
hacer esto = Expr(
Nueva columna ("SoftStart_Accuracy%",
Numérico,
Continuo,
Fórmula (((:Register3_tsoftstart - :start_time) / :Register3_tsoftstart) * 100 )
)
);
hacer esto;
dt << MoveSelectedColumns( {:SoftStart_Accuracy%}, Después( :start_time ) );
);
Mientras( Registro == 4,
hacer esto = Expr(
Nueva columna ("start_time", numérica, continua, fórmula ((:rise_time_scope_v_vout * 1000)/0,8))
);
hacer esto;
dt << MoveSelectedColumns( {:start_time}, Después( :Register4_active ) );
hacer esto = Expr(
Nueva columna ("SoftStart_Accuracy%",
Numérico,
Continuo,
Fórmula (((:Register4_tsoftstart - :start_time) / :Register4_tsoftstart) * 100 )
)
);
hacer esto;
dt << MoveSelectedColumns( {:SoftStart_Accuracy%}, Después( :start_time ) );
);
Mientras( Registro == 5,
hacer esto = Expr(
Nueva columna ("start_time", numérica, continua, fórmula ((:rise_time_scope_v_vout * 1000)/0,8))
);
hacer esto;
dt << MoveSelectedColumns( {:start_time}, Después( :Register5_active ) );
hacer esto = Expr(
Nueva columna ("SoftStart_Accuracy%",
Numérico,
Continuo,
Fórmula (((:Register5_tsoftstart - :start_time) / :Register5_tsoftstart) * 100 )
)
);
hacer esto;
dt << MoveSelectedColumns( {:SoftStart_Accuracy%}, Después( :start_time ) );
);
////////////////////////////////////////////////// //////////////////////////////////////////
// opcionalmente, cierre el cuadro de diálogo. O tal vez quieras ejecutarlo nuevamente...
w << cerrar ventana; // sólo el diálogo, no el informe
)
)
)
)
);