Cuadro de edición de número en el script de cambioSoy nuevo en JSL y Application Builder, así que tengan paciencia conmigo.
Estoy tratando de crear un cuadro de diálogo que tenga una serie de cuadros de edición de números emparejados.Uno de cada par representa una hora de "inicio" y el otro una hora de "finalización" correspondiente:
Quiero evitar la situación en la que el usuario coloca una hora de "inicio" posterior a la hora de "finalización", o una hora de "finalización" anterior a la hora de "inicio".
Mi primer pensamiento fue agregar un script de "cambio" a cada cuadro, algo como esto para el cuadro de "inicio":
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
y así para el cuadro "fin":
If( Start << Get > End << Get,
Start << Set( End << Get )
);
Pero esto no funciona (en el sentido de que no pasa nada cuando ocurre la condición no deseada).
Probablemente estoy haciendo algo bastante tonto, pero la ayuda sería apreciada.
Re: Cuadro de edición de número en script de cambioGracias por toda la ayuda chicos!!!
Re: Cuadro de edición de número en script de cambioApplication Builder toma algún tiempo para aprender, pero vale la pena.Lo he estado usando desde la versión 10 de JMP, y mejora con cada versión.Adjunto una presentación que di en JMP Discovery 2013 JSL Roundtable que puede ser de alguna ayuda.
Re: Cuadro de edición de número en script de cambioSí, puede abrir los archivos guardados del creador de aplicaciones en un editor de texto, pero la interfaz gráfica de usuario del creador de aplicaciones es la única forma compatible de editar el archivo. (Todavía vale la pena echarle un vistazo si quiere tener una idea de lo que sucede cuando se abre el script).
Aquí hay algunos enlaces a recursos en la web.
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
Re: Cuadro de edición de número en script de cambioGracias a todos por las excelentes sugerencias. Todavía no los he probado todos, pero lo haré tan pronto como tenga un descanso de mi trabajo "real".
Mientras tanto, creo que la raíz de muchos de mis problemas es que no he encontrado documentación detallada para App Builder (AB). Debe existir, pero no puedo encontrarlo. ¿Alguien tiene un enlace?
Por ejemplo, no sabía para qué era el campo "Script" en el menú Propiedades de AB, y no hice la conexión con la documentación del cuadro de edición de números (NEB). Estoy andando a tientas por aquí, obviamente.
Otro ejemplo de mi confusión, el campo de entrada "Incremento" en el panel Propiedades AB para NEB existe, pero no acepta una entrada. Podría seguir…
Como digo, una buena documentación sobre AB, y también algunos ejemplos excelentes de secuencias de comandos de cuadros de diálogo modales complejos serían geniales.Además, ¿hay alguna forma de ver realmente el código que AB genera para la interfaz?
Re: Cuadro de edición de número en script de cambioAquí está el ejemplo.Creado con JMP 13, por lo que es posible que no funcione en versiones anteriores.
Re: Cuadro de edición de número en script de cambioDebe configurar scripts para llamar a cada uno de los cuadros de edición de números.Creé un ejemplo simple:
start_time_neb : cuadro de edición de número para la hora de inicio
fin_tiempo_neb : cuadro de edición de número para la hora de finalización
Hice clic derecho en cada uno de los cuadros de edición de números y seleccioné Guiones > Guión (No se cambió el número).Aquí están los scripts que agregué:
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
Re: Cuadro de edición de número en script de cambioUn par de cosas para probar:
1. Mire en la ventana de registro; aunque parece que no sucede nada, es posible que se informe un error que le dará una pista.
2. Reducir el código a algo lo más simple posible.Esto te ayudará a descubrir qué funciona y qué no.Por ejemplo, esto parece funcionar de la manera que usted describe:
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
Re: Cuadro de edición de número en script de cambioPuede hacer esto configurando los valores Min/Max para los NumberEditBoxes de inicio y final dentro de SetFunction (en lugar de OnChange).
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>