Ajouter un script à ButtonBox dans le rapport jmp<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Chère communauté
Je pense que mon problème est simple, mais tout de même j'aurais besoin d'aide. J'utilise la plate-forme de profilage avec le simulateur ajouté pour créer une simulation Monte Carlo d'une réponse avec plusieurs facteurs :
MonProfiler = Profileur (
Oui ( : Réponse )
) ;
MonProfiler << Simulateur (
Les facteurs (
Facteur 1 << Aléatoire ( Normal ()) ,
Facteur 2 << Aléatoire ( Normal ())
) ;
Je souhaite ajouter des fonctionnalités au bouton "Créer un tableau" sous la zone de contour "Simuler au tableau" dans la fenêtre du rapport. Je le fais en ajoutant un script. Ce que je veux faire, c'est nommer la table résultant du bouton 'Make Table' et effectuer une série d'opérations sur cette table :
Signaler ( MonProfiler )[ ButtonBox ( 2 )] << Définir le scénario (
MaTableSim = Tableau de données actuel () ;
//Effectuer des actions sur MySimTable
) ;
Le problème est que le ' Tableau de données actuel' la commande est exécutée avant de toute autre action en appuyant sur le bouton. Cela signifie que la table actuelle n'est pas la table générée en appuyant sur le bouton 'Make Table'. Voici donc ma question : Existe-t-il un moyen d'exécuter la fonction de bouton " construire dans " avant d'exécuter le ' Tableau de données actuel ' commande? Toutes les solutions me donnant automatiquement une référence à la table générée seront très appréciées.
Merci
Re : Ajouter un script à ButtonBox dans le rapport jmpBonjour,
J'ai confirmé auprès de l'équipe de développement JMP qu'il s'agit d'un comportement intentionnel pour que le script soit exécuté avant l'exécution de la fonctionnalité intégrée.
Vous trouverez ci-dessous un exemple simplifié qui montre comment vous pouvez masquer le bouton d'origine, exécuter un script, cliquer sur le bouton d'origine (masqué), puis exécuter un autre morceau de 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" ) ) ); ) ) ));
En utilisant ceci comme modèle, vous pouvez appliquer le concept pour masquer et cliquer sur l'ancien bouton, puis définir le nom de la nouvelle table :
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" ); ) ) ));
J'espère que ça aide.
Wendy
Re : Ajouter un script à ButtonBox dans le rapport jmpSalut Ian
Merci pour votre réponse. J'ai envoyé cette discussion à l'équipe de support, juste pour voir ce qu'ils pourraient avoir à dire.
Re : Ajouter un script à ButtonBox dans le rapport jmpSalut Jerry
J'ai eu une idée similaire pour une solution de contournement. Merci de m'avoir montré comment implémenter cette solution. Cela fonctionne parfaitement
Re : Ajouter un script à ButtonBox dans le rapport jmpJe suis d'accord avec Ian. Cependant, comme solution de contournement jusqu'à ce que vous obteniez une meilleure option, vous pouvez envisager d'ajouter un nouveau bouton qui détourne la fonctionnalité Make Table :
Signaler ( MonProfiler )[ "Simuler au tableau" ] << Préfixer (
nouveau bouton = Boîte à boutons ( "Faire Table Plus" ,
Signaler ( MonProfiler )[ ButtonBox ( 3 )] << Cliquez sur () ;
MaTableSim = Tableau de données actuel () ;
)
) ;
Notez que l'insertion du nouveau bouton modifie la référence au bouton d'origine Make Table de 2 à 3.
Re : Ajouter un script à ButtonBox dans le rapport jmpJe pense que le script ci-dessous confirme simplement le comportement que vous avez trouvé. Il ressemble, dans de tels cas, à 'setScript' ajoute au script prédéfini (ce qui semble raisonnable), mais il semble préfixer plutôt qu'ajouter :
NomsDefaultToHere ( 1 ) ;
// Tableau de test
dt = Nouveau tableau ( "Simuler" ,
Ajouter des lignes ( 5 ) ,
Nouvelle colonne ( "X" ,
Numérique ,
"Continu" ,
Format ( "Meilleur" , 12 ) ,
Définir les valeurs ( [ 1 , 2 , 3 , 4 , 5 ] )
) ,
Nouvelle colonne ( "y" ,
Numérique ,
"Continu" ,
Format ( "Meilleur" , 12 ) ,
Formule ( : X + Aléatoire Normal ( 0 , 0,1 ) )
)
) ;
// Ajuster le modèle
FM = dt << Ajuster le modèle (
Oui ( : y ) ,
Effets ( : X ) ,
Personnalité ( "Moindres carrés standards" ) ,
Accent ( "Effet de levier" ) ,
Courir (
Profileur (
1 ,
Intervalles de confiance ( 1 ) ,
Valeur du terme ( X ( 3 , Bloquer ( 0 ) , Spectacle ( 1 ) ) ) ,
Simulateur (
1 ,
Les facteurs ( X << Aléatoire ( Normal ( 3 , 0,8 ) ) ) ,
Réponses ( y << Pas de bruit )
)
) ,
: y << { Manque d'ajustement ( 0 ) , Tracé Réel par Prédit ( 1 ) , Résiduel du tracé par prévision ( 1 ) , Effet de levier de l'intrigue ( 1 )}
)
) ;
// Définir un exemple de script
faire quelque chose =
Expr (
Bip () ;
Pour ( je = 1 , je <= NTable () , je ++, Imprimer ( je , Tableau de données ( je ) << obtenirNom )) ;
) ;
// Attribuez l'exemple de script au bouton (JMP semble préfixer le script déjà présent ?)
Signaler ( FM )[ ButtonBox ( 5 )] << setScript ( faire quelque chose ) ;
Peut-être envoyer ce fil à support@jmp.com obtenir une réponse définitive?