Sto sperimentando la creazione di una finestra modello di dialogo che sia più intuitiva per i miei clienti. Invece di utilizzare le caselle radio o le caselle di controllo, sto usando le caselle di riepilogo col per rendere l'interfaccia utente più simile alla finestra di dialogo del modello di adattamento. Questo script dovrebbe personalizzare i grafici e l'output per risparmiare tempo all'utente durante la produzione di output da uno script JSL di una tabella di dati per i PQA di un determinato prodotto.
In allegato c'è un file JMP con un set di dati giocattolo con nomi di colonne di base e script JSL allegati a cui faccio riferimento in questo articolo.
Ho una variabile in cui l'utente inserisce una col chiamata set_resultcol. Questo valore di set_resultcol può essere utilizzato con qualsiasi intestazione di colonna del set di dati (ovvero un set di dati può avere "risultato" o "Risultato" o "Risultato (N)" o "Valore" come intestazione della variabile numerica continua che sarà modellata su l'asse y come variabile dipendente.
Tuttavia, sto riscontrando alcuni problemi con l'espressione del valore set_resultcol non espresso nella ridenominazione dello script dell'asse y nell'opzione della casella di riepilogo col che ho utilizzato per rendere l'interfaccia utente più intuitiva, anche se ho provato a ottenere i valori dall'elenco risultante dalla casella di riepilogo col, ad esempio {"Risultato"}[1]. Sono ancora nuovo al concetto di col list box nella finestra modale, quindi spero di poter avere occhi più esperti sul mio codice JSL per aiutarmi a determinare cosa si può fare.
Quando ho utilizzato le radio box, il valore risultante per set_resultcol era una stringa, a cui si poteva fare riferimento nel JSL seguente per rinominare l'asse y in PQA (attributo di qualità):

Names Default To Here( 1 );
dt = Current Data Table();
//part 1. ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Set group by variable an",
<<MODAL></MODAL>E il grafico risultante avrebbe l'etichetta dell'asse y "Risultato" (ad esempio) rinominata "A" (il PQA è chiamato "A" per semplicità).

Ho la seguente finestra di dialogo modale che ho creato con la casella di riepilogo col per rendere la finestra di dialogo modale più intuitiva ed estetica con una funzione di trascinamento della selezione invece di visualizzare tutte le colonne contemporaneamente. Sotto questa finestra ho il codice JSL corrispondente con cui ho problemi per quanto riguarda queste caselle di riepilogo col.

Names Default To Here( 1 );
dt = Current Data Table();
nw1 = New Window("Set variables for stability model",
<<MODAL></MODAL>Tuttavia, il grafico risultante è il seguente, con il nome dell'asse y, in questa tabella di dati "Risultato" sull'asse y, quando dovrebbe dire "A" per la PQA "A":

So che la casella di riepilogo col sta producendo elenchi di variabili, perché ho opzioni nello script JSL che mi dicono:
//is this set_resultcol a list? if so, show the contents.
Show(is list(set_resultcol)); // which gives 1 or “true” as shown in the log
Show(set_resultcol[1]); //which gives “Result” as shown in the log

Cosa c'è di sbagliato in questo script JSL che non consente di fare riferimento a questo nel set di dati? Cosa posso fare per risolvere questo problema?
L'unica documentazione che posso trovare relativa a questo problema è nel pdf "JMP 15 Scripting Guide" pagine 524, 527-529 per le caselle di riepilogo col e la sezione sugli elenchi in quel manuale. Ho provato questi esempi, ma non mi dicono nulla che non so già.
Non userei Invio per modificare i rapporti se posso evitarlo. Preferirei ottenere i riferimenti e quindi modificare il rapporto in base a quelli. Lo script seguente potrebbe darti alcune idee:
Names Default To Here(1);
dt = Open("$DOWNLOADS/Col List Box Y-axis labeling issue 7_11_2022.jmp");
nw1 = New Window("Set variables for stability model",
<<MODAL>
["LSL" => 0.3, "USL" => 0.9],
"B" =>
["LSL" => 0.5, "USL" => 2],
"C" =>
["LSL" => 4, "USL" => 6]
];
//Response Result outline box references
response_ob_refs = fm << XPath("//OutlineBox[contains(text(), 'Response Result PQA')]");
For Each({ror_list}, response_ob_refs,
ror = ror_list[1];
cur_group = Word(2, ror << get title, "=");
cur_lsl = aa_settings[cur_group]["LSL"];
cur_usl = aa_settings[cur_group]["USL"];
rp_ref = (ror << XPath("//OutlineBox[contains(text(), 'Regression Plot')]"))[1];
// Y-axis
y_axis = rp_ref[Axis Box(1)];
Eval(EvalExpr(
y_axis << Add Ref Line(Expr(cur_lsl), "Solid", Dark Red, Expr(EvalInsert("LSL (^cur_lsl^)")), 1);
y_axis << Add Ref Line(Expr(cur_usl), "Solid", Dark Red, Expr(EvalInsert("USL (^cur_usl^)")), 1);
));
y_axis << RemoveAxisLabel("Result");
y_axis << AddAxisLabel(cur_group);
y_axis << Min(cur_lsl);
y_axis << Max(cur_usl);
f_box = rp_ref[FrameBox(1)];
f_box << Frame Size(600, 400);
// Legend
f_box << Row Legend(
Eval(set_groupby),
Color(1),
Color Theme("JMP Default"),
Marker(0),
Marker Theme(""),
Continuous Scale(0),
Reverse Scale(0),
Excluded Rows(0)
);
);
</MODAL>

Se per qualche motivo vuoi davvero usare Dispatch, ti suggerisco di dare un'occhiata Inserisci un'espressione in un'altra usando Eval Insert, Eval Expr, Parse e Substitute