Ich experimentiere mit der Erstellung einer Dialogmodellbox, die für meine Kunden benutzerfreundlicher ist. Anstatt Optionsfelder oder Kontrollkästchen zu verwenden, verwende ich Col-List-Boxen, um die Benutzeroberfläche mehr an das Dialogfeld des Anpassungsmodells anzupassen. Dieses Skript soll die Diagramme und Ausgaben anpassen, um dem Benutzer Zeit zu sparen, wenn er Ausgaben aus einem Datentabellen-JSL-Skript für die PQAs eines bestimmten Produkts erstellt.
Im Anhang finden Sie eine JMP-Datei mit einem Spielzeugdatensatz mit grundlegenden Spaltennamen und angehängten JSL-Skripten, auf die ich in diesem Artikel verweise.
Ich habe eine Variable namens set_resultcol, in die der Benutzer eine Spalte eingibt. Dieser Wert von set_resultcol kann mit jeder Datensatzspaltenüberschrift verwendet werden (d. h. ein Datensatz kann „Ergebnis“ oder „Ergebnis“ oder „Ergebnis (N)“ oder „Wert“ als Überschrift der kontinuierlichen numerischen Variablen haben, auf der modelliert wird die y-Achse als abhängige Variable.
Allerdings stoße ich auf einige Probleme, da der Ausdruck des set_resultcol-Werts bei der Umbenennung des Y-Achsen-Skripts in der Col-Listbox-Option, die ich verwendet habe, um die Benutzeroberfläche benutzerfreundlicher zu gestalten, nicht ausgedrückt wird, obwohl ich dies getan habe Ich habe versucht, die Werte aus der resultierenden Liste des Col-Listenfelds abzurufen, zum Beispiel mit {„Ergebnis“}[1]. Das Konzept der Kol-Listboxen im modalen Fenster ist für mich noch ein Neuling, daher hoffe ich, dass ich einen etwas erfahreneren Blick auf meinen JSL-Code werfen kann, um herauszufinden, was getan werden kann.
Als ich Optionsfelder verwendete, war der resultierende Wert für set_resultcol eine Zeichenfolge, auf die in der folgenden JSL verwiesen werden konnte, um die Y-Achse in PQA (Qualitätsattribut) umzubenennen:

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>Und die Y-Achsenbeschriftung des resultierenden Diagramms wäre beispielsweise „Ergebnis“ und in „A“ umbenannt worden (die PQA wird der Einfachheit halber „A“ genannt).

Ich habe das folgende modale Dialogfeld erstellt, das ich mit dem Listenfeld „col“ erstellt habe, um das modale Dialogfeld mit einer Drag-and-Drop-Funktion benutzerfreundlicher und ästhetischer zu gestalten, anstatt alle Spalten gleichzeitig anzuzeigen. Unterhalb dieses Fensters befindet sich der entsprechende JSL-Code, mit dem ich in Bezug auf diese Spaltenlistenfelder Probleme habe.

Names Default To Here( 1 );
dt = Current Data Table();
nw1 = New Window("Set variables for stability model",
<<MODAL></MODAL>Das resultierende Diagramm sieht jedoch wie folgt aus, mit dem Namen der y-Achse, in dieser Datentabelle „Ergebnis“ auf der y-Achse, wenn dort „A“ für die PQA „A“ stehen sollte:

Ich weiß, dass das Listenfeld „col“ Listen mit Variablen erstellt, weil ich Optionen im JSL-Skript habe, die mir sagen:
//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

Was ist an diesem JSL-Skript falsch, das keine Referenzierung im Datensatz zulässt? Was kann ich tun, um das Problem zu beheben?
Die einzige Dokumentation, die ich zu diesem Problem finden kann, befindet sich im „JMP 15 Scripting Guide“ auf den PDF-Seiten 524, 527–529 für die Col-List-Boxen und im Abschnitt über Listen in diesem Handbuch. Ich habe diese Beispiele ausprobiert, aber sie sagen mir nichts, was ich nicht bereits weiß.
Ich würde Dispatch nicht zum Ändern von Berichten verwenden, wenn ich es vermeiden kann. Ich würde lieber die Referenzen einholen und dann den Bericht basierend darauf ändern. Das folgende Skript könnte Ihnen einige Anregungen geben:
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>

Wenn Sie Dispatch aus irgendeinem Grund wirklich nutzen möchten, empfehle ich Ihnen, einen Blick darauf zu werfen Fügen Sie einen Ausdruck in einen anderen ein, indem Sie Eval Insert, Eval Expr, Parse und Substitute verwenden