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 mi farebbe comunque bene un aiuto. Sto utilizzando la piattaforma profiler con il simulatore aggiunto per creare una simulazione Monte Carlo di una risposta con diversi fattori:
MyProfiler = Profilatore (
Y ( : Risposta )
) ;
MyProfiler << Simulatore (
Fattori (
Fattore 1 << Casuale ( Normale ()) ,
Fattore 2 << Casuale ( Normale ())
) ;
Desidero aggiungere alcune funzionalità al pulsante "Crea tabella" nella casella di riepilogo "Simula in tabella" nella finestra del report. 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 ( MyProfiler )[ ButtonBox ( 2 )] << Imposta copione (
MySimTable = Tabella dati corrente () ;
//Esegue azioni su MySimTable
) ;
Il problema è che " 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: esiste un modo per eseguire la funzione del pulsante "build in" prima di eseguire " Tabella dati corrente 'comando? Qualsiasi soluzione che mi fornisca un riferimento alla tabella generata automaticamente sarà molto apprezzata.
Grazie
Ri: Aggiungi script a ButtonBox nel report jmpCiao,
Ho confermato con il team di sviluppo JMP che è un comportamento intenzionale eseguire lo script prima dell'esecuzione della funzionalità integrata.
Di seguito è riportato un esempio semplificato che dimostra come nascondere il pulsante originale, eseguire uno script, fare clic sul pulsante originale (nascosto) e quindi eseguire un'altra parte 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" ) ) ); ) ) ));
Utilizzando 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 aiuti.
Wendy
Ri: 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.
Ri: 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
Ri: Aggiungi script a ButtonBox nel report jmpSono d'accordo con Ian. Tuttavia, come soluzione alternativa finché non ottieni un'opzione migliore, potresti prendere in considerazione l'aggiunta di un nuovo pulsante che dirotta la funzionalità Crea tabella:
Rapporto ( MyProfiler )[ "Simula su tabella" ] << Anteporre (
nuovopulsante = Casella dei pulsanti ( "Crea tabella Plus" ,
Rapporto ( MyProfiler )[ ButtonBox ( 3 )] << Clic () ;
MySimTable = Tabella dati corrente () ;
)
) ;
Tieni presente che l'inserimento del nuovo pulsante modifica il riferimento al pulsante originale Crea tabella da 2 a 3.
Ri: Aggiungi script a ButtonBox nel report jmpPenso che lo script seguente confermi semplicemente il comportamento che hai trovato. Sembra, in questi casi, 'setScript' aggiunge allo script predefinito (il che sembra ragionevole), ma sembra anteporre anziché aggiungere:
NomiDefaultToHere ( 1 ) ;
// Tabella di prova
dt = Nuova tabella ( "Simulare" ,
Aggiungi righe ( 5 ) ,
Nuova colonna ( "X" ,
Numerico ,
"Continuo" ,
Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 1 , 2 , 3 , 4 , 5 ] )
) ,
Nuova colonna ( "y" ,
Numerico ,
"Continuo" ,
Formato ( "Migliore" , 12 ) ,
Formula ( : X + Normale casuale ( 0 , 0,1 ) )
)
) ;
// Adatta il modello
FM = dt << Modello adatto (
Y ( : sì ) ,
Effetti ( : X ) ,
Personalità ( "Minimi quadrati standard" ) ,
Enfasi ( "Leva degli effetti" ) ,
Correre (
Profilatore (
1 ,
Intervalli di confidenza ( 1 ) ,
Valore del termine ( X ( 3 , Serratura ( 0 ) , Spettacolo ( 1 ) ) ) ,
Simulatore (
1 ,
Fattori ( X << Casuale ( Normale ( 3 , 0,8 ) ) ) ,
Risposte ( sì << Nessun rumore )
)
) ,
: sì << { Mancanza di adattamento ( 0 ) , Traccia il valore effettivo rispetto a quello previsto ( 1 ) , Traccia residuo in base alla previsione ( 1 ) , Leva degli effetti di trama ( 1 )}
)
) ;
// Definisce uno script di esempio
fare qualcosa =
Espr (
Bip () ;
Per ( io = 1 , io <= NTabella () , io ++, Stampa ( io , Tabella dati ( io ) << getNome )) ;
) ;
// Assegna lo script di esempio al pulsante (JMP sembra anteporre allo script già presente?)
Rapporto ( FM )[ ButtonBox ( 5 )] << setScript ( fare qualcosa ) ;
Magari invia questo thread a support@jmp.com per avere una risposta definitiva?