Aggiungi script a ButtonBox nel report jmp<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Cara comunità
Penso che il mio problema sia semplice, ma lo stesso potrei aver bisogno di aiuto. Sto usando la piattaforma profiler con il simulatore aggiunto per creare una simulazione monte carlo di una risposta con diversi fattori:
Il mio profilo = Profiler (
Y ( : Risposta )
) ;
Il mio profilo << Simulatore (
Fattori (
Fattore 1 << A caso ( Normale ()) ,
Fattore 2 << A caso ( Normale ())
) ;
Desidero aggiungere alcune funzionalità al pulsante "Crea tabella" nella casella della struttura "Simula su tabella" nella finestra del rapporto. Lo faccio aggiungendo uno script. Quello che voglio fare è nominare la tabella risultante dal pulsante "Crea tabella" ed eseguire una serie di operazioni su questa tabella:
Rapporto ( Il mio profilo )[ ButtonBox ( 2 )] << Imposta sceneggiatura (
MySimTable = Tabella dati corrente () ;
//Esegui azioni su MySimTable
) ;
Il problema è che il ' Tabella dati corrente' il comando viene eseguito prima qualsiasi altra azione quando si preme il pulsante. Ciò significa che la tabella corrente non è la tabella generata premendo il pulsante 'Crea tabella'. Quindi ecco la mia domanda: c'è un modo per eseguire la funzione del pulsante "integra" prima di eseguire il " Tabella dati corrente 'comando? Qualsiasi soluzione che mi dia un riferimento alla tabella generata automaticamente sarà molto apprezzata.
Grazie
Re: Aggiungi script a ButtonBox nel report jmpCiao,
Ho confermato con il team di sviluppo JMP che è un comportamento intenzionale che lo script venga eseguito prima dell'esecuzione della funzionalità integrata.
Di seguito è riportato un esempio semplificato che mostra come nascondere il pulsante originale, eseguire uno script, fare clic sul pulsante originale (nascosto) e quindi eseguire un altro bit di 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 questo come modello, puoi applicare il concetto per nascondere e fare clic sul vecchio pulsante e quindi impostare il nome della nuova tabella:
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" ); ) ) ));
Spero che questo aiuti.
Wendy
Re: Aggiungi script a ButtonBox nel report jmpCiao Ian
Grazie per la tua risposta. Ho inviato questa discussione al team di supporto, solo per vedere cosa potrebbero avere da dire.
Re: Aggiungi script a ButtonBox nel report jmpCiao Jerry
Ho avuto un'idea simile per una soluzione alternativa. Grazie per avermi mostrato come implementare questa soluzione. Funziona perfettamente
Re: Aggiungi script a ButtonBox nel report jmpSono d'accordo con Ian. Tuttavia, come soluzione alternativa fino a quando non ottieni un'opzione migliore, potresti prendere in considerazione l'aggiunta di un nuovo pulsante che dirotta la funzionalità Crea tabella:
Rapporto ( Il mio profilo )[ "Simula a tavola" ] << anteporre (
nuovo pulsante = Bottone ( "Make Table Plus" ,
Rapporto ( Il mio profilo )[ ButtonBox ( 3 )] << Clic () ;
MySimTable = Tabella dati corrente () ;
)
) ;
Si noti che l'inserimento del nuovo pulsante cambia il riferimento al pulsante originale Crea tabella da 2 a 3.
Re: Aggiungi script a ButtonBox nel report jmpPenso che lo script qui sotto confermi solo il comportamento che hai trovato. Sembra, in questi casi, 'setScript' aggiunge allo script predefinito (che sembra ragionevole), ma sembra anteporre anziché aggiungere:
NomiDefaultToHere ( 1 ) ;
// Tabella di prova
dt = Nuova tavola ( "Simulare" ,
Aggiungi righe ( 5 ) ,
Nuova colonna ( "X" ,
Numerico ,
"Continuo" ,
Formato ( "Migliore" , 12 ) ,
Imposta i valori ( [ 1 , 2 , 3 , 4 , 5 ] )
) ,
Nuova colonna ( "y" ,
Numerico ,
"Continuo" ,
Formato ( "Migliore" , 12 ) ,
Formula ( : X + Normale casuale ( 0 , 0.1 ) )
)
) ;
// Modello adatto
fm = dt << Modello in forma (
Y ( : y ) ,
Effetti ( : X ) ,
Personalità ( "Minimi quadrati standard" ) ,
Enfasi ( "Leva degli effetti" ) ,
Correre (
Profiler (
1 ,
Intervalli di confidenza ( 1 ) ,
Valore a termine ( X ( 3 , Serratura ( 0 ) , Mostrare ( 1 ) ) ) ,
Simulatore (
1 ,
Fattori ( X << A caso ( Normale ( 3 , 0.8 ) ) ) ,
Risposte ( y << Nessun rumore )
)
) ,
: y << { Mancanza di adattamento ( 0 ) , Trama Attuale da Previsto ( 1 ) , Residuo di trama da Predicted ( 1 ) , Leva effetto trama ( 1 )}
)
) ;
// Definisci uno script di esempio
fare qualcosa =
espr (
Bip () ;
Per ( io = 1 , io <= NTable () , io ++, Stampa ( io , Tabella dati ( io ) << getName )) ;
) ;
// Assegna lo script di esempio al pulsante (JMP sembra anteporre allo script che è già presente?)
Rapporto ( fm )[ ButtonBox ( 5 )] << setScript ( fare qualcosa ) ;
Magari manda questo thread a support@jmp.com per avere una risposta definitiva?