JSL: 赤いホットボタン オプションをアウトライン ボックスに追加するにはどうすればよいですか? それともできますか?こんにちは、みんな、
(可能であれば) 独自に定義したアウトライン ボックスに赤いホットボタン メニューを追加する方法を知りたいと思っています。 たとえば、グラフ ビルダー プラットフォームには、「スクリプトをデータ テーブルに保存」やその他のオプションを実行できるレッドホット ボタンがあります。

このオプションを使用したいと考えて作成した他のスクリプトがあります。 アウトライン ボックスには、いくつかのオプション用の小さな灰色の三角形が付属していますが、赤いホットボタン オプションはありません。 例えば:

Scripting Index と Scripting Guide を検索しましたが、これに関するドキュメントが見つかりません。
それが可能かどうか知っている人はいますか? もしそうなら、どのようにして?
ありがとう!、
DS
自動化とスクリプト作成マスカスタマイゼーション結果の共有と伝達ウィンドウズRe: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?<< Set Menu Script をお探しですか? スクリプトインデックスからの例
Names Default To Here(1);
New Window("Example",
fontobj = ob = Outline Box("Outline Box",
V List Box(
ob2 = Outline Box("Outline Box 2",
H List Box(
Text Edit Box("Top Left"),
Text Edit Box("Top Right")
)
),
ob3 = Outline Box("Outline Box 3",
H List Box(
Text Edit Box("Bottom Left"),
Text Edit Box("Bottom Right")
)
)
)
)
);
ob << Set Menu Script(
{"A", Print("A"), "B", Print("B"), "B1", Print("B1"), "B2",
Print("B2"), "B3", Print("B3"), "C", Print("C")}
);
ob << Set Submenu(2, 3);

これに関する内容は JMP ヘルプにもありますが、JMP ヘルプ ページの検索がひどいため、見つけるのは非常に困難です ( https://www.jmp.com/support/help/en/17.2/#page/jmp/construct-display-boxes-for-new-windows.shtml#ww883930 )

Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?チュートリアルビデオ:
JMP スクリプト言語の概要、第 5.3 章@ 10:30分
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?こんにちは@jthiそして@ほぎ、
このプロセスをどこから始めればよいかについての情報をありがとうございます。非常に役に立ちます。 そして、現時点ではまだ部分的な解決策にすぎません。
メニュー スクリプトを追加することができました。現時点では、ローカル データ フィルターと保存スクリプト (データ テーブル、スクリプト ウィンドウ、ジャーナルの 3 つのオプション) の 2 つだけを追加しています。
現在、ローカル データ フィルターとジャーナルへの保存スクリプトは正常に機能しています。 私が最も苦労しているのは、データ テーブルへのスクリプトの保存とスクリプト ウィンドウへのスクリプトの保存機能を動作させることです。 以下は、メニュー スクリプトをアクティブにして、選択された各メニュー項目にアクションを割り当てるコードのセクションです。
mob << Set Menu Script(
{"Local Data Filter", ts << Local Data Filter ; gb << Local Data Filter, "Save Script", "", "To Data Table", nwin <<
Save Script to Data Table( "Correlation Analysis of " || ycols[1] || " vs. " || xcols[1], <<PROMTP></PROMTP>カスタマイズしたレポート ウィンドウは次のようになります。

ユーザーがデータ テーブル (またはスクリプト ウィンドウ) へのスクリプトの保存を選択できるオプションが欲しいのですが、基本的にこのカスタマイズされたレポートの生成に使用されるスクリプトが保存されるため、この分析をデータ テーブルに保存し、スクリプトの横にある緑色のスクリプト矢印をクリックすると、アドイン全体を再実行しなくても分析を再実行できます。
スクリプト索引でこれについて読むと、プラットフォーム レポート (グラフ ビルダーや時系列など) のようなオブジェクトのみがデータ テーブルに個別に保存できるようですが、レポート ウィンドウであるアウトライン ボックス オブジェクト全体は保存できないようです。そのような送信 (<<) コマンドは受け付けません。 各プラットフォーム オブジェクトを個別に保存するのではなく、データ テーブル/スクリプト ウィンドウの分析に使用した後、スクリプト コード全体を保存したいと考えています。
正確な理由はわかりませんが、おそらく、複数の Expr ステートメントを使用しているため、コードの構造が異なっているためだと思われます。 大まかなアイデアとして、私のコードは次のように構成されています。
Names Default To Here( 1 );
//any variable definitions
var1 = .;
var2 = .;//etc
//Expression to recall roles
RecallRoles = Expr(
//inside is the code to recall roles
);
//Expression to clear roles
ClearRoles = Expr(
//similar code to clear roles
);
//User interface window
ValueDlg = Expr(
nwin = New Window(
// opens a new window with the main outline box and subpanels
//and action buttons
mob = Outline Box(
//this is the main outline box that contains the subpanels and
//time series and graph builder platforms
//it also contains the action buttons that perform certain tasks
)
);
mob << Set Menu Script(
//this is where I'm trying to save the evaluated script to the data
//table so a usercan just cick it, and the script will execute with
//the variables already evaluated and not have to cast columns into
//roles, etc.
);
);
ValueDlg;//this calls the ValueDlg Expr and evaluates it.
私がこれを行う方法について何かアイデアや考えがあれば (私の説明が意味をなしていることを願っています)、フィードバックをいただければ幸いです。
ありがとう!、
DS
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?データ フィルターを追加し、レポートのスクリプトをデータ テーブルに保存するには - Windowsパソコンの場合は、レポート ツールバーの使用を検討してください。

Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?アウトライン ボックスにスクリプトを要求すると、表示ツリーのようなものが返されるだけです。
したがって、これも機能しません。
レポートを生成すると、レポートを生成するための式全体が得られます。
したがって、ユーザーが [スクリプトの保存] をクリックしたときに、この式を使用してスクリプトとして保存することができます。
[その後ユーザーが行った変更は保存されません]
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
New Window( "test",
ob = Outline Box( "test",
V List Box( Text Box( "hello" ), gb = dt << Graph Builder( Variables( X( :height ), Y( :weight ), Overlay( :sex ) ) ) )
)
);
ob << get script(); // Display Tree
ob << get scriptable Object (); // Empty
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?カスタマイズされたウィンドウを作成するスクリプトを保存することは、基本的にユーザーの選択を適用した状態でそのスクリプトにアドイン全体を含める必要があるため、一般に非常に困難です (そして、ユーザーが基本的にアドインを再実行するのと同じことになります)で)。 このようなことに対して、少なくともいくつかの異なる解決策がありました(アドインは通常、ウィンドウ全体を保存するには複雑すぎるため、ウィンドウ全体を保存しようとはしません)。
- ある種の設定変数をデータ テーブルに保存し、ユーザーがアドインにロードして「補充」できるようにします。
- スクリプト全体を保存するのではなく、機能があまり多くないある種の「ダッシュボード」タイプのソリューションを保存します。
- いくつかの単純な部分だけをテーブル スクリプトとして保存します
- そして、今のところ覚えていないものがいくつかあるかもしれません...
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?最良のアイデアは、レポートを手動で生成するのではなく、次の方法で生成することだと思います。ダッシュボードビルダー。
生成されたダッシュボードには、(ダッシュボード) スクリプトを保存するオプションを含む赤い三角形のメニューがあります。
...そして Jmp17 以降、手動で生成したスクリプトのように見える簡略化されたバージョンを保存するオプションもあります。

Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?からの提案に追加@jthiの場合、アドイン内で呼び出す関数を作成すると、保存スクリプトは単なる関数呼び出しになります。 関数が適切に設計され、必要なオプションを処理していることを確認するには、ある程度の管理が必要ですが、アドインを起動するダイアログ ボックスを作成している場合は、引数の多くがすでに定義されている可能性があります。
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?こんにちは@jthi 、 @ホギ、 そして@ジェフ・パーキンソン、
フィードバック、ご意見、ディスカッションに感謝いたします。 うーん、思ったよりも大変そうな気がします。 実行できないというわけではありませんが、アウトライン ボックスにメニュー スクリプトを追加するほど「単純」ではありません。 ここでいくつかのアイデアを煮詰めて考える必要があるかもしれません。
@ホギ, [スクリプトをウィンドウに保存] と [すべてのオブジェクトのスクリプトをデータ テーブルに保存] も試しましたが、どちらも意図したとおりに機能しませんでした。
探している解決策が見つかったら、他の人がこれに遭遇して興味を持った場合に備えて、私が解決した方法でこの投稿を必ず更新します。
みんな、ありがとう!、
DS
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?Application/Dashboard Builder は驚くほど便利です - 試してみる価値があります 
JMP® を使用したダッシュボードとアプリケーションの構築 (US 2018 408)
Youtube ビデオ (Jmp 10)
https://www.youtube.com/watch?v=XyiQqUELc2A
ここに多くの詳細を含む長いビデオがあります:
なぜまだ App Builder を使用していないのですか? - (2023-US-30MP-1401)
短縮版:
アプリケーションビルダーを使用してパラメータ化されたアプリケーションを作成する
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?基本的に、それを「簡単に」実行できるように最初から設計する必要があります。
これは私が持っている 1 つの例です。このアドインは、グラフ ビルダー (およびパーティション/ブートストラップ フォレスト) のみが含まれているという意味で非常にシンプルです。

しかし、それを構築するスクリプトを保存しようとすると、悪夢のようなことになります。 JMP の Get Script やデータ テーブルへのスクリプトの保存 (またはいずれかのメソッド) では捕捉できなかった多くの隠されたものがあり、アドインは 10 以上の異なる .jsl ファイルに分割されています。 たとえ UI をデータテーブルに保存できたとしても、名前空間を厳密に管理しているため、ユーザーがスクリプトを再実行すると機能しません (たとえば、UI はさまざまな関数のすべてにアクセスできません)。したがって、この場合は、列の選択と順序を保存するオプションのみをユーザーに提供します (複数の列を保存できます)。その後、同じテーブルを開いているときに別の入力をロードし、アドインを再実行できます。

このアドインをリファクタリングして、(そのほとんどを)テーブル スクリプトまたはスクリプト ウィンドウに保存できるように機能させることは可能ですが、最初から書き直す必要があります。
他のアドイン(その写真は表示できません)は、ユーザー入力に基づいてデータをクエリし、いくつかの計算を実行し、いくつかのグラフビルダーといくつかの追加の列スイッチャー/データフィルターを使用して結果を表示し、その「プラットフォーム」を保存します/クエリと計算が終了した後、UI/視覚化がデータ テーブルに即座に反映されます。 次に、そのテーブル スクリプトを実行して結果をユーザーに表示します。 これはかなり単純なアドインなので、いくつかの式を使用してかなり簡単にこれを行うことができました (私が持っていた初期バージョンではビジュアライゼーションを保存していませんでしたが、ユーザーからのリクエストだったので実装しました)。
そして、私が現在取り組んでいる 3 番目のもの (これも表示できません) は、同様のことを行います。 ユーザー入力に基づいてデータを取得し、計算を実行し、分析結果を表示して視覚化します。 繰り返しになりますが、ユーザーに提供するすべてのオプションを使用するのは面倒すぎるため、UI全体をデータテーブルに保存することはできませんが、基本的に「ポップアウトダッシュボード」であるボタンを追加します。これにより、ダッシュボードのみが作成されますUI の一部とこの「ポップアウト ダッシュボード」内に、必要に応じていくつかの追加機能を追加できます。最初からそのためにデザインする。 そして、このポップアウト ダッシュボードは (できれば) データ テーブルに保存できます。
編集: また、リコールボタンをスクリプトに追加することはめったにありません。これも面倒で、適切に動作するまでに時間がかかる可能性があるためです。 これに役立つスクリプトが 1 つあることはわかっていますが、それは私が使用するのに十分なタスクを (常に) 実行できるわけではありません。 私が作成したほとんどのツールに対してユーザーが呼び出しボタンを要求し始めたら、ほとんどの場合に機能するスクリプトを作成することを検討するかもしれません。
Re: JSL: アウトライン ボックスに赤いホットボタン オプションを追加するにはどうすればよいですか? それともできますか?アプリケーション ビルダーを介して生成される GUI を使用すると、これはすべて非常に簡単です。GUI で作業し、最適化して、全機能の最新バージョンを新しいテーブル スクリプトとして保存できます。 「これを行うにはアプリケーション ビルダーを使用しない方がよい」という暗黙的なメッセージに気づきました。アプリケーション ビルダーでは不可能な機能はありますか?
私が気づいた欠点が 1 つあります。
プラットフォーム オブジェクトの単純なコレクションを超えるダッシュボードの場合、GUI を自動化するためにいくつかの JSL コードを追加する必要があります。
この JSL コードのデバッグは、JSL エディターで行うよりもはるかに複雑に感じられます。
たぶん私はそれを正しく行う方法を知らないだけです。
コードの一部をデバッグする方法について、アプリケーション ビルダー ユーザーからの提案はありますか。たとえば、アプリケーション ビルダーからアプリケーションを起動し、並行して JSL エディターでコードのスニペットを実行して動作を確認するなどの方法がありますか? JSL エディターでコードのスニペットを変更せずに使用できるように、アプリケーションの名前空間にアクセスする方法のフレームワークはありますか?