Agregar script a ButtonBox en jmp report<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Estimada comunidad
Creo que mi problema es simple, pero de todos modos me vendría bien un poco de ayuda. Estoy usando la plataforma del generador de perfiles con el simulador agregado para crear una simulación de monte carlo de una respuesta con varios factores:
Mi Perfilador = perfilador (
Y ( : Respuesta )
) ;
Mi Perfilador << Simulador (
factores (
Factor 1 << Aleatorio ( Normal ()) ,
factor 2 << Aleatorio ( Normal ())
) ;
Quiero agregar alguna funcionalidad al botón 'Crear tabla' debajo del cuadro de contorno 'Simular a tabla' en la ventana del informe. Lo hago agregando un script. Lo que quiero hacer es nombrar la tabla resultante del botón 'Crear tabla' y realizar una serie de operaciones sobre esta tabla:
Reporte ( Mi Perfilador )[ BotónCuadro ( 2 )] << Establecer guión (
MiSimTable = Tabla de datos actual () ;
//Realizar acciones en MySimTable
) ;
El problema es que el ' Tabla de datos actual' se ejecuta el comando antes de cualquier otra acción al presionar el botón. Esto significa que la tabla actual no es la tabla generada al presionar el botón 'Crear tabla'. Así que aquí está mi pregunta: ¿Hay alguna manera de realizar la función del botón 'incorporar' antes de ejecutar el ' Tabla de datos actual ' ¿dominio? Cualquier solución que me dé una referencia a la tabla generada automáticamente será muy apreciada.
Gracias
Re: Agregar script a ButtonBox en jmp reportHola,
He confirmado con el equipo de desarrollo de JMP que es un comportamiento intencional que el script se ejecute antes de que se ejecute la funcionalidad integrada.
A continuación se muestra un ejemplo simplificado que demuestra cómo puede ocultar el botón original, ejecutar una secuencia de comandos, hacer clic en el botón original (oculto) y luego ejecutar otra parte de la secuencia de comandos.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );dt << New Column( "heightplusweight", Formula( :height + :weight ) );
// replace the button in Simulate To Tablex = Profiler( y( :heightplusweight ) );x << Simulator( Factors( Factor1 << Random( Normal() ), Factor2 << Random( Normal() ) ));bb2 = Report( x )["Simulate to Table"][Button Box( 1 )];bb2 << Visibility( "Hidden" ); // new for JMP 12bb2 << Sib Prepend( Button Box( "NewButton", setfunction( Function( {this}, // this==replacement button New Window( "Before", < H List Box( Button Box( "OK" ), Button Box( "Cancel" ) ) ); (this << Sib) << Click; // sib==original button because of < New Window( "After", < H List Box( Button Box( "OK" ), Button Box( "Cancel" ) ) ); ) ) ));
Usando esto como modelo, puede aplicar el concepto para ocultar y hacer clic en el botón anterior y luego establecer el nombre de la nueva tabla:
bb2 << Sib Prepend( Button Box( "NewButton", setfunction( Function( {this}, // this==replacement button (this << Sib) << Click; // sib==original button because of < Data Table(1) << Set Name( "New Table Name" ); ) ) ));
Espero que esto ayude.
Wendy
Re: Agregar script a ButtonBox en jmp reportHola, Ian
Gracias por su respuesta. He enviado esta discusión al equipo de soporte, solo para ver qué tienen que decir.
Re: Agregar script a ButtonBox en jmp reportHola jerry
Tuve una idea similar para una solución alternativa. Gracias por mostrarme cómo implementar esta solución. funciona perfectamente
Re: Agregar script a ButtonBox en jmp reportEstoy de acuerdo con Ian. Sin embargo, como solución alternativa hasta que obtenga una mejor opción, podría considerar agregar un nuevo botón que secuestre la función Crear tabla:
Reporte ( Mi Perfilador )[ "Simular a la tabla" ] << Anteponer (
boton nuevo = Caja de botones ( "Hacer mesa más" ,
Reporte ( Mi Perfilador )[ BotónCuadro ( 3 )] << Hacer clic () ;
MiSimTable = Tabla de datos actual () ;
)
) ;
Tenga en cuenta que al insertar el nuevo botón, la referencia al botón Crear tabla original cambia de 2 a 3.
Re: Agregar script a ButtonBox en jmp reportCreo que el siguiente script solo confirma el comportamiento que ha encontrado. Parece, en tales casos, 'setScript' agrega a la secuencia de comandos predefinida (que parece razonable), pero parece anteponer en lugar de agregar:
Nombres predeterminados a aquí ( 1 ) ;
// tabla de prueba
dt = Nueva tabla ( "Simular" ,
Agregar filas ( 5 ) ,
Nueva columna ( "X" ,
Numérico ,
"Continuo" ,
Formato ( "Mejor" , 12 ) ,
Establecer valores ( [ 1 , 2 , 3 , 4 , 5 ] )
) ,
Nueva columna ( "y" ,
Numérico ,
"Continuo" ,
Formato ( "Mejor" , 12 ) ,
Fórmula ( : X + Aleatorio normal ( 0 , 0.1 ) )
)
) ;
// Modelo de ajuste
FM = dt << Modelo de ajuste (
Y ( : y ) ,
Efectos ( : X ) ,
Personalidad ( "Mínimos cuadrados estándar" ) ,
Énfasis ( "Efecto de apalancamiento" ) ,
Correr (
perfilador (
1 ,
Intervalos de confianza ( 1 ) ,
Valor del término ( X ( 3 , Cerrar ( 0 ) , Espectáculo ( 1 ) ) ) ,
Simulador (
1 ,
factores ( X << Aleatorio ( Normal ( 3 , 0.8 ) ) ) ,
Respuestas ( y << Ningun ruido )
)
) ,
: y << { Falta de ajuste ( 0 ) , Trazar real por predicho ( 1 ) , Trazar Residual por Predicho ( 1 ) , Apalancamiento del efecto de la trama ( 1 )}
)
) ;
// Definir un script de muestra
hacer algo =
exp. (
Bip () ;
Para ( i = 1 , i <= NTable () , i ++, Impresión ( i , Tabla de datos ( i ) << obtenerNombre )) ;
) ;
// Asigne la secuencia de comandos de muestra al botón (¿JMP parece anteponerse a la secuencia de comandos que ya está allí?)
Reporte ( FM )[ BotónCuadro ( 5 )] << setScript ( hacer algo ) ;
Tal vez envíe este hilo a support@jmp.com para obtener una respuesta definitiva?