私は、クライアントにとってより使いやすいダイアログモデルボックスを作成することを試みています。 ラジオボックスやチェックボックスを使用する代わりに、colリストボックスを使用して、ユーザーインターフェイスをフィットモデルのダイアログボックスのようにしています。 このスクリプトは、特定の製品のPQAのデータテーブルJSLスクリプトから出力を生成するときにユーザー時間を節約するために、グラフと出力をカスタマイズすることになっています。
添付されているのは、基本的な列名を持つおもちゃのデータセットを含むJMPファイルと、この記事全体で参照する添付のJSLスクリプトです。
ユーザーがset_resultcolという名前の列を入力する変数があります。 set_resultcolのこの値は、任意のデータセット列ヘッダーで使用できます(つまり、データセットは、モデルとなる連続数値変数のヘッダーとして「result」または「Result」または「Result(N)」または「Value」を持つことができます)従属変数としてのy軸。
ただし、ユーザーインターフェイスをよりユーザーフレンドリーにするために使用している列リストボックスオプションのy軸スクリプトの名前を変更しても、set_resultcol値の式が表現されないという問題が発生しています。たとえば、{“ Result”} [1]を使用して、colリストボックスの結果リストから値を取得しようとしました。 モーダルウィンドウの列リストボックスの概念はまだ新しいので、JSLコードをより経験豊富に見て、何ができるかを判断できるようになることを願っています。
ラジオボックスを使用したとき、set_resultcolの結果の値は文字列でした。これは、y軸の名前をPQA(品質属性)に変更するために以下のJSLで参照できます。

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>また、結果のグラフのy軸ラベルは(たとえば)「A」に名前が変更されます(簡単にするために、PQAは「A」と呼ばれます)。

colリストボックスを使用して作成した次のモーダルダイアログボックスを使用して、すべての列を一度に表示するのではなく、ドラッグアンドドロップ機能を使用してモーダルダイアログをよりユーザーフレンドリーで見栄えよくします。 このウィンドウの下に、これらの列リストボックスに関して問題が発生している対応するJSLコードがあります。

Names Default To Here( 1 );
dt = Current Data Table();
nw1 = New Window("Set variables for stability model",
<<MODAL></MODAL>ただし、結果のグラフは次のようになります。y軸の名前は、このデータテーブルのy軸の「結果」で、PQA「A」に対して「A」と表示されている必要があります。

JSLスクリプトに次のようなオプションがあるため、colリストボックスが変数のリストを生成していることを知っています。
//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

これをデータセットで参照できないようにするこのJSLスクリプトの何が問題になっていますか? これを修正するにはどうすればよいですか?
この問題に関連して私が見つけることができる唯一のドキュメントは、colリストボックスの「JMP15スクリプティングガイド」pdfページ524、527-529、およびそのマニュアルのリストのセクションにあります。 私はこの例を試しましたが、私がまだ知らないことは何も教えてくれません。
回避できる場合は、Dispatchを使用してレポートを変更することはありません。 むしろ参照を取得し、それらに基づいてレポートを変更したいと思います。 以下のスクリプトはあなたにいくつかのアイデアを与えるかもしれません:
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>

何らかの理由で本当にディスパッチを使用したい場合は、チェックアウトすることをお勧めしますEval Insert、Eval Expr、Parse、およびSubstituteを使用して、ある式を別の式に挿入します