Agregar script a ButtonBox en el informe jmp<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Querida comunidad
Creo que mi problema es simple, pero de todos modos me vendría bien un poco de ayuda. Estoy usando la plataforma Profiler con el simulador agregado para crear una simulación 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 esquema "Simular en 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:
Informe ( Mi perfilador )[ Caja de botones ( 2 )] << Establecer guión (
MiTablaSim = Tabla de datos actuales () ;
//Realizar acciones en MySimTable
) ;
El problema es que el ' Tabla de datos actuales' se ejecuta el comando antes 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'. Entonces aquí está mi pregunta: ¿Hay alguna manera de realizar la función del botón 'integrar' antes de ejecutar el ' Tabla de datos actuales ' ¿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 el informe jmpHola,
He confirmado con el equipo de desarrollo de JMP que es un comportamiento intencionado 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 un script, hacer clic en el botón original (oculto) y luego ejecutar otro fragmento del script.
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 el informe jmpHola, Ian
Gracias por su respuesta. Envié esta discusión al equipo de soporte, solo para ver qué tienen que decir.
Re: Agregar script a ButtonBox en el informe jmpHola 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 el informe jmpEstoy 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 secuestra la funcionalidad Crear tabla:
Informe ( Mi perfilador )[ "Simular en tabla" ] << anteponer (
nuevo botón = Caja de botones ( "Hacer mesa Plus" ,
Informe ( Mi perfilador )[ Caja de botones ( 3 )] << Hacer clic () ;
MiTablaSim = Tabla de datos actuales () ;
)
) ;
Tenga en cuenta que al insertar el nuevo botón se cambia la referencia al botón Crear tabla original de 2 a 3.
Re: Agregar script a ButtonBox en el informe jmpCreo que el siguiente script simplemente confirma el comportamiento que encontró. En tales casos, parece 'setScript' agrega al script predefinido (que parece razonable), pero parece anteponer en lugar de agregar:
NombresDefaultToHere ( 1 ) ;
// tabla de prueba
dt = Nueva mesa ( "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 + Normal aleatorio ( 0 , 0.1 ) )
)
) ;
// Modelo de ajuste
fm = dt << Modelo de ajuste (
Y ( : y ) ,
Efectos ( : X ) ,
Personalidad ( "Mínimos cuadrados estándar" ) ,
Énfasis ( "Apalancamiento del efecto" ) ,
Correr (
Perfilador (
1 ,
Intervalos de confianza ( 1 ) ,
Valor del plazo ( 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 ) , Gráfico real por previsto ( 1 ) , Trazar residual según lo previsto ( 1 ) , Apalancamiento del efecto de la trama ( 1 )}
)
) ;
// Definir un script de muestra
hacer algo =
Expr. (
Bip () ;
Para ( i = 1 , i <= NTable () , i ++, Imprimir ( i , Tabla de datos ( i ) << obtenerNombre )) ;
) ;
// Asigne el script de muestra al botón (¿JMP parece anteponerse al script que ya está allí?)
Informe ( fm )[ Caja de botones ( 5 )] << setScript ( hacer algo ) ;
Quizás envíe este hilo a soporte@jmp.com para obtener una respuesta definitiva?