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 j'aurais quand même besoin d'aide. J'utilise la plateforme de profileur avec le simulateur ajouté pour créer une simulation Monte Carlo d'une réponse avec plusieurs facteurs :
Mon profil = Profileur (
Oui ( : Réponse )
) ;
Mon profil << Simulateur (
Facteurs (
Facteur 1 << Aléatoire ( Normale ()) ,
Facteur 2 << Aléatoire ( Normale ())
) ;
Je souhaite ajouter des fonctionnalités au bouton « Créer un tableau » sous la zone de contour « Simuler dans un tableau » dans la fenêtre du rapport. Je fais cela en ajoutant un script. Ce que je veux faire, c'est nommer la table résultant du bouton 'Créer une table' et effectuer une série d'opérations sur cette table :
Rapport ( Mon profil )[ Boîte à boutons ( 2 )] << Définir le script (
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 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 « Créer une table ». Voici donc ma question : existe-t-il un moyen d'exécuter la fonction du bouton "Construire" avant d'exécuter le " Tableau de données actuel ' commande? Toute solution me donnant automatiquement une référence à la table générée sera très appréciée.
Merci
Re : Ajouter un script à ButtonBox dans le rapport jmpBonjour,
J'ai confirmé auprès de l'équipe de développement JMP que l'exécution du script avant l'exécution de la fonctionnalité intégrée est un comportement intentionnel.
Vous trouverez ci-dessous un exemple simplifié qui montre comment masquer le bouton d'origine, exécuter un script, cliquer sur le bouton d'origine (caché), puis exécuter un autre 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 d'assistance, juste pour voir ce qu'elle pourrait 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 mettre en œuvre 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é Créer une table :
Rapport ( Mon profil )[ "Simuler dans un tableau" ] << Ajouter un préfixe (
nouveau bouton = Boîte à boutons ( "Faire une table plus" ,
Rapport ( Mon profil )[ Boîte à boutons ( 3 )] << Cliquez sur () ;
MaTableSim = Tableau de données actuel () ;
)
) ;
Notez que l'insertion du nouveau bouton modifie la référence au bouton Créer une table d'origine de 2 à 3.
Re : Ajouter un script à ButtonBox dans le rapport jmpJe pense que le script ci-dessous ne fait que confirmer le comportement que vous avez trouvé. Cela ressemble, dans de tels cas, à « setScript » ajoute au script prédéfini (ce qui semble raisonnable), mais il semble ajouter plutôt que d'ajouter :
NomsDefaultToHere ( 1 ) ;
// Tableau de tests
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 ( "oui" ,
Numérique ,
"Continu" ,
Format ( "Meilleur" , 12 ) ,
Formule ( : X + Aléatoire Normal ( 0 , 0,1 ) )
)
) ;
// Ajuster le modèle
fm = dt << Modèle adapté (
Oui ( : oui ) ,
Effets ( : X ) ,
Personnalité ( "Moins carrés standards" ) ,
Accent ( "Levier d'effet" ) ,
Courir (
Profileur (
1 ,
Intervalles de confiance ( 1 ) ,
Valeur à terme ( X ( 3 , Verrouillage ( 0 ) , Montrer ( 1 ) ) ) ,
Simulateur (
1 ,
Facteurs ( X << Aléatoire ( Normale ( 3 , 0,8 ) ) ) ,
Réponses ( oui << Pas de bruit )
)
) ,
: oui << { Manque d'ajustement ( 0 ) , Tracer le réel par prévu ( 1 ) , Tracer le résidu par prévision ( 1 ) , Effet de levier de l'effet de tracé ( 1 )}
)
) ;
// Définir un exemple de script
faire quelque chose =
Expr (
Bip () ;
Pour ( je = 1 , je <= NTable () , je ++, Imprimer ( je , Table de données ( je ) << obtenirNom )) ;
) ;
// Attribue l'exemple de script au bouton (JMP semble ajouter le script qui est déjà là ?)
Rapport ( fm )[ Boîte à boutons ( 5 )] << setScript ( faire quelque chose ) ;
Peut-être envoyer ce fil à support@jmp.com pour avoir une réponse définitive ?