Essayer d'obtenir un modèle adapté avec une entrée utilisateur.Disons que je veux aider un utilisateur avec un modèle adapté, parce que je sais ce qu'est le Y et je sais qu'il veut qu'il fasse du reg. Je leur donne donc ceci.
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
Cool, fit = une boîte de dialogue de modèle. Mais ce n'est pas modal, donc le script continue de fonctionner. De plus, quand ils poussent run, fit est supprimé.
Ce que je veux vraiment, c'est que l'utilisateur entre ses données, puis une fois le rapport terminé, je continue.
J'essaie de faire quelque chose comme ça, mais je n'ai pas eu de chance.
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]" & try(obj[1] << Get Prediction Formula; 1, 0));
,
wait(.3);
);
je VRAIMENT Je ne veux pas avoir à reconstruire toute l'interface utilisateur avec toutes les options, d'autant plus que les effets ne sont pas simples à mettre en place.
Re: Essayer d'obtenir un modèle adapté avec une entrée utilisateur.Je peux faire quelque chose comme ça, mais j'ai l'impression qu'il y a mille façons de briser cela et j'espère vraiment quelque chose de plus robuste.
while(
obj = current report()[OutlineBox(1)] << Get Scriptable Object();
!(char(obj) == "Fit Generalized[]");
,
wait(.3);
);
btn_go_real = report(obj)[Buttonbox(1)];
report(obj)[1] << Append(Buttonbox("MyGo",
<<SET function=""></SET>Re: Essayer d'obtenir un modèle adapté avec une entrée utilisateur.Est-ce que cela fait quelque chose pour aider? Il s'agit d'une fenêtre modale, et vous pouvez capturer l'arborescence d'affichage de sortie.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
nw = New Window( "example",
<<MODAL></MODAL>
Re: Essayer d'obtenir un modèle adapté avec une entrée utilisateur.Pas vraiment, à cause de la deuxième fenêtre
Re: Essayer d'obtenir un modèle adapté avec une entrée utilisateur.J'ai déjà utilisé ce type d'approche à plusieurs reprises:
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
);
// The 'Run' button
runButton = Report(fit)[ButtonBox(9)];
// Append to the in-built action of the button
runButton << setScript(doSomething);
// The 'Terms' shown in 'dt2' reflect the user selections made in teh launch dialog
doSomething =
Expr(
Beep();
fit2 = fit << run;
dt2 = Report(fit2)[tableBox(5)] << makeCombinedDataTable;
dt2 << setName("Parameter Estimates")
);Re: Essayer d'obtenir un modèle adapté avec une entrée utilisateur. @vince_faller , @ian_jmp me battre à elle. En fait, mon script utilise 2 fonctionnalités Garder la boîte de dialogue ouverte, puis l'astuce d'Ian pour ajouter un script à un bouton d'exécution qu'il a fourni il y a quelques années (vers le 21 août 2018). My doSomething enregistre le modèle dans la table de données.
Profitant de cette occasion pour remercier à nouveau Ian pour l'astuce utile et garder la boîte de dialogue ouverte (que Ian utilise également). J'ai en fait coupé et collé son code et modifié!
Names default to here(1);
dt = open("$SAMPLE_DATA\Big Class.jmp");
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Keep Dialog Open(1)
);
// Define a sample script
doSomething =
Expr(
Beep();
// For( i = 1, i <= N Table(), i++,
// Print( i, Data Table( i ) << getName )
// );
fit << Save to Data Table;
snames = dt << Get Table Script Names();
s = dt << get script( snames[N Items( snames )] );
Show( s );
);
// Assign the sample script to the button (JMP seems to prepend to the script that's already there?)
Report( fit )[Button Box( 9 )] << setScript( doSomething );
Re: Essayer d'obtenir un modèle adapté avec une entrée utilisateur.Merci @ian_jmp et @ gzmorgan0 , Je me suis appuyé sur ce que vous avez dit et je l'ai fait deux fois parce que je voulais vraiment que mon doSomething fasse des choses après avoir appuyé sur Go dans la plate-forme Gen Reg. Je les ai également fonctionnalisés juste pour m'assurer que les variables locales ne cassent rien avec cette méthode.
Encore une question que je n'ai pas pu surmonter, si je veux que ma fonction "My_Gen_Reg" renvoie la valeur du "doSomething". Encore une fois, essayez de ne pas utiliser les globaux ou les heres.
* Edit *, j'ai une solution d'arrêt qui semble fonctionner. Je n'aime toujours pas la façon dont cela fonctionne. C'est certainement mieux que de recréer l'interface utilisateur.
Names default to here(1);
my_Gen_Reg = Function({dt},
{fit, pf_get},
fit = dt << Fit Model(
Y( :height ),
Effects(),
Center Polynomials( 0 ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
//Keep Dialog Open(1)
);
Report( fit )[Button Box( 9 )] << Set Function(
Function({self},
{fit_self, fit2},
fit_self = ((self << Top Parent)[OutlineBox(1)]<<GET scriptable="" object=""></GET>