¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) en función de una selección previa en una ventana modal?En el siguiente script, me gustaría hacer lo siguiente:
Según la selección de TestTech, quiero que aparezca la lista de casillas de verificación TestStage apropiada ( aparecer es preferible, si no volverse activo si todas las opciones deben estar visibles).Entonces,
- Si se selecciona Tech1, todos los TestSages con _Tech1 deben estar disponibles para que el usuario los seleccione.
- Si se selecciona Tech2, todos los TestSages con _Tech2 deberían estar disponibles para que el usuario los seleccione. Esta lista se comenta a continuación.
- Si se selecciona Tech3, todos los TestSages con _Tech3 deberían estar disponibles para que el usuario los seleccione. Esta lista se comenta a continuación, y así sucesivamente.
También me gustaría que la opción "Seleccionar todo" esté disponible en cada lista.
¿Como hacer esto?
Names Default To Here( 1 );
Clear Log ();
listInd = {};
returned2 = {};
win = New Window( "Select Tech & TestStage", << modal,
V List Box (
tb1=Text Box("Select Tech", << set font style("bold")),
cb1 = List Box(
{"Tech1", "Tech2", "Tech3"},
returned1 = (cb1 << Get Selected());
listInd= cb1 << Get Selected Indices;
),
tb1=Text Box("Select one or more TestStage", << set font style("bold")),
cb2 = Check Box(
{"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1"},
//{"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2"},
//{"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"},
returned2 = (cb2 << Get Selected());
),
tb3=Text Box("Query TestDate (last 6 months selected by default)", << set font style("bold")),
end_date = Today();
start_date = Date Increment(end_date, "month", -6, "actual");
cb3 = H List Box(
Text Box("From:"),
scal = Number Edit Box(
start_date,
<<SET format=""></SET>
Automatización y secuencias de comandosventanasRe: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Esto podría darte algunas ideas de lo que podrías hacer.
Names Default To Here(1);
lb_values = {"Tech1", "Tech2", "Tech3"};
cb_values = {"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1",
"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2",
"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"
};
expr_update_cb = Expr(
cur_sel = lb << get selected;
If(N Items(cur_sel),
cur_cb_values = Filter Each({val}, cb_values,
cur_tech = Word(2, val, "_");
Contains(cur_sel, cur_tech);
);
,
cur_cb_values = cb_values;
);
cb2 << Set items(cur_cb_values);
);
win = New Window("Select Tech & TestStage", <<MODAL></MODAL>Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi Gracias. La ejecución de su script comienza mostrando todos Etapas de prueba bajo Etapa de prueba por defecto (pegado a continuación) y luego una vez al tecnología se selecciona, se comporta según sea necesario.
¿Se podría modificar el script para que no muestre nada primero en Etapa de prueba texto de selección y luego una vez que tecnología está seleccionado, ¿mostrar las TestStages apropiadas/disponibles?

Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Puede inicializar la casilla de verificación con una lista vacía en lugar de cb_values.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi ya lo he probado con
cb_values = {};pero creo que no lo estoy colocando correctamente. ¿Adónde debería ir esta afirmación?
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Este es el lugar donde estableces esos valores la primera vez.

Además, si desea que esté siempre vacío cuando no se realicen selecciones, también deberá realizar una pequeña modificación en expr_update_cb.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi . En ese caso sí coloqué el
cb_values = {};correctamente, pero no hizo la pequeña modificación a expr_update_cb.Simplemente colocar la línea anterior antes de cb2= Check Box(... no hace lo que se necesita una vez tecnología está seleccionado. Pensamiento.......
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Inicialice la casilla de verificación con una lista vacía, no con cb_values (son cosas diferentes).
Dentro de la expresión esta es la parte que tienes que considerar (y entender)

¿Por qué se usa la declaración if aquí? ¿Qué pasaría si vamos a otro lugar? ¿Qué pasaría si no lo tenemos, tenemos una lista vacía y vamos a Filtrar Cada?
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi Gracias por los consejos, lo intenté anoche pero sin éxito hasta ahora.
Así es como entiendo el requisito, si ninguno de los elementos se selecciona en libra entonces cb2 no debería mostrarse. cb2 debería mostrarse solo cuando N elementos (cur_sel) ≥1.
Sin embargo, expr_update_cb se activa sólo cuando se seleccionan uno o más elementos en libra
No me queda claro como modificar expr_update_cb que se ejecutará cuando no se seleccione nada en libra
En caso de que el requisito de no mostrar nada bajo cb2 ser manejado con una declaración if/else alrededor libra es decir, si no se selecciona nada en lb, no se muestra cb2?
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Names Default To Here(1);
lb_values = {"Tech1", "Tech2", "Tech3"};
cb_values = {"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1",
"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2",
"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"
};
expr_update_cb = Expr(
cur_sel = lb << get selected;
If(N Items(cur_sel),
cur_cb_values = Filter Each({val}, cb_values,
cur_tech = Word(2, val, "_");
Contains(cur_sel, cur_tech);
);
,
cur_cb_values = cb_values;
);
cb2 << Set items(cur_cb_values);
);
win = New Window("Select Tech & TestStage", <<MODAL></MODAL>Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi No estoy seguro de por qué repites la publicación de tu script original, pero aquí es donde llegué, todavía no funciona como es necesario, tal vez el final parezca cerca
?
Names Default To Here(1);
clear log ();
listInd = {}; p = N Items (listInd);
lb_values = {"Tech1", "Tech2", "Tech3"};
cb_values = {"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1",
"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2",
"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"
};
expr_update_cb = Expr(
cur_sel = lb << get selected;
If(N Items(cur_sel), cur_cb_values = Filter Each({val}, cb_values, cur_tech = Word(2, val, "_"); Contains(cur_sel, cur_tech))
,
cur_cb_values = cb_values;
);
p = N Items(cur_sel);
cb2 << Set items(cur_cb_values); show (cur_cb_values);
);
win = New Window("Select Tech & TestStage", <<MODAL></MODAL>
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Lo más probable es que mi control roto no me permitiera copiar el script correcto y publiqué demasiado rápido. Debería arreglarse ahora.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi Gracias. Su script actualizado de hoy está funcionando. Me interesaría saber si la forma en que lo estaba haciendo hoy (mi guión de hoy) es un enfoque incorrecto.
Además, ¿por qué no aparece la consulta de fecha si pongo tb3 y cb3 secciones en la parte superior, es decir, arriba tb1?
(la idea es conseguir que el usuario elija las fechas antes que nada)
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Supongo que te falta "," o tienes ";" en el lugar equivocado
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi mi "," la ubicación parece correcta pero todavía no puedo hacer que la consulta de fecha funcione cuando la coloco en la parte superior.
Además, cómo devolver el valor seleccionado por " seleccionar todo "? Mi ubicación original para devuelto2 Sólo parece funcionar para la selección manual.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Simplemente obtendría todos los valores en variables cuando el usuario presione Aceptar, no cuando el usuario cambie sus selecciones.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi Gracias, pero solo puedo recuperar selecciones manuales con mi ubicación de devuelto2 dentro de cb2=Casilla de verificación (... .
Por favor, ¿podría indicarme dónde colocarlo? cb2 << Obtener seleccionado(); para disparar sólo cuando el usuario presiona DE ACUERDO.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Guía de secuencias de comandos > Mostrar árboles > Ventanas modales en JSL > Construir una ventana modal Da una explicación de las nuevas ventanas usando modal. Y esto debería dar un ejemplo de dónde colocar comandos para obtener valores en variables.
Names Default To Here(1);
nw = New Window("Example", <<MODAL></MODAL>
También puede colocarlo en << Al validar o << Al cerrar (consulte el Índice de secuencias de comandos, por ejemplo, y alguna explicación), pero normalmente los coloco dentro del botón Aceptar.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi , Gracias.
show(cb_sel);
obras.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi Mientras estoy en este tema (y no creo un nuevo hilo con una pregunta nueva pero relacionada), me pregunto si es posible mostrar un texto que muestre al usuario qué hizo cada etapa de prueba cuando el usuario la selecciona. Ejemplo pegado a continuación.El texto solo se muestra cuando se realiza la selección y permanece hasta que se desmarca.

Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Definitivamente es posible, pero cómo hacerlo robusto y fácil de usar puede ser otra cosa. A continuación se muestra una opción rápida que me vino a la mente (lo más probable es que haya mejores opciones)
Names Default To Here(1);
cb_sel = {};
nw = New Window("Example", <<MODAL></MODAL>Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi Gracias. Esto es exactamente lo que se necesita, pero me resultaría difícil adaptarlo a mi ejemplo original en este hilo (mi primera publicación, con el script Tech y TestStage). Si pudiera mostrarlo para una o dos selecciones, debería poder hacer el resto.
Puedo ver que el texto para cada etapa de prueba debe estar predefinido.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Si lo escribo para una o dos selecciones, básicamente reescribiría todo el guión, ya que hay muchas cosas que deberían tenerse en cuenta. Además, no es necesario predefinirlos si puede determinar cuáles deberían ser de alguna otra manera.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?@jthi Ningún problema. Gracias por su ayuda hasta ahora en este tema. El script que usó para la demostración parece requerir que cada casilla de verificación se trate individualmente para obtener texto adicional, mientras que en mi caso original todas las opciones vienen en una sola lista.
¿Podría darme algunos consejos para poder comenzar con mi primer guión original en esta publicación?
Intentaré hacerlo yo mismo y luego volveré con preguntas específicas.
Además, en mi caso, el texto para cada etapa de prueba seleccionada sería una lista de parámetros probados predefinidos. Por ejemplo, para la primera etapa de prueba {A, B}, para la segunda, {A, B, C, L,M}.
Re: ¿Cómo hacer que las casillas de verificación cambien (o se vuelvan visibles o activas) según una selección anterior en una ventana modal?Utilice una matriz asociativa para almacenar sus diferentes listas, cree expresiones/funciones para crear un recopilador de casillas de verificación y casillas de verificación.
Esto no usa una ventana modal, ya que es mucho más fácil de desarrollar cuando no se usa una, ya que puedes probar fácilmente diferentes get y demás desde el editor de scripts.
Names Default To Here(1);
tech_options = {"Tech1", "Tech2"};
stages_tech1 = {"Sage1_Tech1", "Sage2_Tech1"};
stages_tech1_text = {"First Level Tech1", "Second Level Tech1"};
stages_tech2 = {"Sage1_Tech2", "Sage2_Tech2"};
stages_tech2_text = {"First Level Tech2", "Second Level Tech2"};
aa_tech = Associative Array();
aa_tech["Tech1"] = Associative Array(stages_tech1, stages_tech1_text);
aa_tech["Tech2"] = Associative Array(stages_tech2, stages_tech2_text);
get_cbs = Expr(
cbs = cb_lub << XPath("//CheckBoxBox");
);
update_checkboxes = Expr(
tech_selections = lb << get selected;
cb_lub = Lineup Box(N Col(2));
For Each({tech_selection}, tech_selections,
For Each({{stage, text}}, aa_tech[tech_selection],
cb_lub << Append(Check Box(stage, << Set Function(function({this},
(this << sib) << Set(this << get);
))));
cb_lub << Append(IfBox(0, Text Box(text)))
);
);
Try((cb_collector << child) << Delete Box());
cb_collector << Append(cb_lub);
);
win = New Window("Select Tech & TestStage",
V List Box(
H List Box(
Spacer Box(Size(0, 300)), // to force height
V List Box(
Spacer Box(Size(300, 0)), // to force width
tb1 = Text Box("Select Tech", <<SET font="" style=""></SET>
