¿Cómo muestro un cuadro de texto solicitando información del usuario?Hola,
Estoy intentando crear un script básico que analice mis datos.
Cuando presiono la miniatura vinculada al guión, quiero que
1. Pídale al usuario que ingrese los rangos.
2. Cree una tabla de datos que muestre el máximo y el mínimo.
3. Genera un gráfico con el mínimo, el máximo y el objetivo.
Hasta ahora todo lo que puedo hacer es obtener el script para la tabla de datos o el gráfico e incorporarlo a los accesos directos en JMP por separado. No puedo entender cómo hacer que genere un cuadro de consulta para el usuario y no puedo incorporar el gráfico y la tabla de datos juntos. ¿Puede recomendarnos un conjunto de tutoriales básicos que puedan ayudar con esto?
Atentamente,
elaina
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Hola jarmo,
¡Gracias de nuevo! Una pregunta más: ¿Por qué mi script funciona cuando uso userFirstName y userLastName pero no funciona cuando uso b1,b2 en el texto de la cadena Definición de ruta de archivo?
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window( "Defining User Name", <<MODAL></MODAL>
Mejor,
Tarde
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Recibes este error porque estás usando una ventana modal y la estás cerrando "demasiado pronto". Las ventanas modales son un tipo especial de ventanas que básicamente requieren que uses títulos de botones específicos. Guía de secuencias de comandos > Mostrar árboles > Ventanas modales en JSL > Construir una ventana modal
Nota: Las ventanas modales requieren al menos un botón para cerrar la ventana. Puedes usar DE ACUERDO , Sí , No , o Cancelar para etiquetar los botones de la ventana modal. Si no incluye al menos uno de estos botones en una ventana modal, JMP agrega un DE ACUERDO botón.
Elimine el w << closeWindow; desde los botones Actualizar cadena. Si desea cerrar la ventana cuando se presiona ese botón (tendrá un botón Aceptar innecesario), agregue el botón Aceptar y luego envíele un mensaje de clic. Creo que incluso puedes ocultar el botón Aceptar si quieres.
Names Default To Here(1);
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window("prototype",
<<MODAL></MODAL>
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Hola jarmo,
¡Gracias! ¡Esto funcionó de maravilla! Sin embargo, ahora me he topado con dos problemas más. Si puedo describirlos:
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window( "prototype", <<MODAL></MODAL>
En primer lugar, al presionar las cadenas de actualización se muestra la tabla correcta, pero también se genera un error:

En segundo lugar, el script "funciona", es decir, realiza la importación de múltiples archivos, si uso las variables userFirstName y userLastName, pero no funciona si uso b1, b2 en la cadena de concatenación. Supongo que por qué es que la parte que estoy usando para definir las variables b1, b2 (usando el cuadro de edición de texto) es local. ¿Las variables b1, b2 no continúan existiendo en el script restante? Si ese es el caso, ¿cómo hago para que existan como variables globales?
¿Cómo me deshago del error? Parece deberse a que agregué una cláusula modal << a la ventana. Pero necesito hacer esto para pausar el script y permitir que el operador verifique que la entrada de su nombre sea correcta.
Idealmente, el flujo de trabajo que estoy intentando crear es:
el usuario ejecuta el script
El script muestra un cuadro emergente que le pide al usuario que defina su nombre y apellido.
El script permite al usuario verificar que su entrada sea correcta (mostrar filePathString sería mejor que la salida actual)
El script, después de que el usuario hace clic en Aceptar, continúa y utiliza las nuevas variables en varios filePathStrings diferentes.
Hay muchas otras formas en las que podría incorporar un cuadro de texto de entrada de datos en este script para mi propósito, por lo que cualquier ayuda sería muy apreciada.
Gracias,
Tarde
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Estás recibiendo Enviar allí porque es lo que se está "evaluando" en la tabla (<< significa Enviar() ) Lo más probable es que sea suficiente simplemente ajustar su lista con Eval List() para evaluar los valores allí
Names Default To Here(1);
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window("prototype", // opens a window with a title and this content...
Border Box(top(20), bottom(20), Left(20), Right(20), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box(Text Box("Report Generator")), // a second title, centered
Spacer Box(size(1, 30)), // a little vertical space
H List Box(Text Box("First Name: "), b1 = Text Edit Box(userFirstName)), // data entry
Spacer Box(size(1, 10)), // a little vertical space
H List Box(Text Box("Last Name: "), b2 = Text Edit Box(userLastName)), // more data entry
Spacer Box(size(1, 30)), // a little vertical space
H Center Box( // center the button
Button Box("Update Strings", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table("StringCheck",
New Column("Name",
Character,
Set Values(Eval List({b1 << get text(), b2 << get text()}))
)
);
// optionally, close the dialog. Or, you might want to run it again...
w << closeWindow; // just the dialog, not the report
)
)
)
)
);
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Hola Craige,
Espero que responder a un hilo antiguo esté bien. Quiero crear algunas variables para usarlas como cadenas más adelante en un script (directorios de usuarios para la importación de archivos que cambian según el usuario). Estoy intentando adaptar su script para lograr esto.
La idea es que las variables se creen primero con valores predeterminados. Luego aparece el cuadro de entrada, el usuario cambia los valores, el script continúa y usa las variables ahora actualizadas en una importación.
//Import multiple files
Multiple File Import(
<<SET folder=""></SET>
Entonces lo siguiente será lo primero en el guión:
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window( "prototype", // opens a window with a title and this content...
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box( Text Box( "Report Generator" ) ), // a second title, centered
Spacer Box( size( 1, 30 ) ), // a little vertical space
H List Box( Text Box( "First Name: " ), b1=Text Edit Box( userFirstName ) ), // data entry
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "Last Name: " ), b2=Text Edit Box( userLastName ) ), // more data entry
Spacer Box( size( 1, 30 ) ), // a little vertical space
H Center Box( // center the button
Button Box( "Update Strings", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table( "StringCheck", New Column( "Name", Character, Set Values( {b1<< get text(), b2 << get text()} ) ) );
// optionally, close the dialog. Or, you might want to run it again...
w << closeWindow; // just the dialog, not the report
)
)
)
)
);Obtuve con éxito la ventana de entrada de datos y una tabla llamada StringCheck con una columna de caracteres "Nombre"; sin embargo, los dos valores son "Enviar":

He probado algunas cosas diferentes para que funcione, pero por mi vida no puedo entender de dónde viene "Enviar".
Cualquier ayuda apreciada, gracias.
Tarde
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Mmm. Me pregunto si probé ese JSL. NumberEditBox no actualiza la variable v1/v2 cuando se cambia el campo, por lo que el informe es siempre el mismo. Esto es lo que debería ser:
v1 = 30; // two numbers with default
v2 = 40; // values; these will go in a data table
w = New Window( "prototype", // opens a window with a title and this content...
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box( Text Box( "Report Generator" ) ), // a second title, centered
Spacer Box( size( 1, 30 ) ), // a little vertical space
H List Box( Text Box( "value 1: " ), b1=Number Edit Box( v1 ) ), // data entry
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "value 2: " ), b2=Number Edit Box( v2 ) ), // more data entry
Spacer Box( size( 1, 30 ) ), // a little vertical space
H Center Box( // center the button
Button Box( "make report", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table( "Untitled", New Column( "a", Set Values( {b1<<GET></GET>
Con las variables b1 y b2 adicionales para recordar los cuadros y el <
The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.The report isn't created until after the button is pressed. Artistic license.El informe no se crea hasta que se presiona el botón. Licencia artística.
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Parece haber otro ejemplo de este hilo. aquí . Consulte también la respuesta que publiqué allí.
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?Puede crear un diálogo modal o no modal en JMP con su mensaje personalizado.
Los cuadros de diálogo modales no te permitirán hacer nada más hasta que los completes. http://www.jmp.com/support/help/Modal_Windows.shtml
Los cuadros de diálogo no modales le permiten trabajar en otras ventanas y volver a la ventana no modelo más tarde: http://www.jmp.com/support/help/Constructing_Display_Trees.shtml#259363
Un prototipo no modal de lo que usted describe podría verse así:
v1 = 30; // two numbers with default
v2 = 40; // values; these will go in a data table
w = New Window( "prototype", // opens a window with a title and this content...
Border Box( top( 20 ), bottom( 20 ), Left( 20 ), Right( 20 ), // window dressing
V List Box( // V and H lists nest to organize the display boxes
H Center Box( Text Box( "Report Generator" ) ), // a second title, centered
Spacer Box( size( 1, 30 ) ), // a little vertical space
H List Box( Text Box( "value 1: " ), Number Edit Box( v1 ) ), // data entry
Spacer Box( size( 1, 10 ) ), // a little vertical space
H List Box( Text Box( "value 2: " ), Number Edit Box( v2 ) ), // more data entry
Spacer Box( size( 1, 30 ) ), // a little vertical space
H Center Box( // center the button
Button Box( "make report", // this script runs when the button is pressed...
// make a new table with the values...
dt = New Table( "Untitled", New Column( "a", Set Values( {v1, v2} ) ) );
// launch a platform to analyze the data...
dt << Distribution( Continuous Distribution( Column( :a ), Quantiles( 0 ), Summary Statistics( 0 ), Vertical( 0 ), Outlier Box Plot( 0 ) ) );
// optionally, close the dialog. Or, you might want to run it again...
w << closeWindow; // just the dialog, not the report
)
)
)
)
);
Prototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogPrototype dialogDiálogo de prototipo
Re: ¿Cómo puedo mostrar un cuadro de texto solicitando información del usuario?b1 y b2 no almacenan los valores, son solo referencias a sus cuadros de presentación. Y cuando cierres tu ventana modal, perderás el acceso a ellas. Puede almacenar los valores al presionar el botón.
Names Default To Here(1);
// Defining firstname and lastname string
userFirstName = "XXXX";
userLastName = "YYYY";
//changing username variables based on user input
w = New Window("Defining User Name",
<<MODAL></MODAL>
b1_val y b2_val. Y si usas algo así, también deberías usarlos al agregar valores a tu tabla.