新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法既に開いているデータ テーブルにフィルターを追加するスクリプトがあります。 スクリプトが呼び出される前に、ユーザーがそのテーブルのデータ フィルタを (手動で) 開いている場合があります。
このような既存のデータ フィルターは、スクリプトの先頭で dt << Clear Row States を実行しても、スクリプト化された新しいフィルターの効果を妨げているようです。
したがって、スクリプトの先頭に、既存のテーブル フィルターをすべて閉じるステートメントが必要です。 しかし、他の誰かが自分のスクリプトの外で既に作成した任意のオープン データ フィルターを参照する方法がわかりません。 提案?
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法Scripting Index で、次の方法でデータ テーブルを参照できることがわかりました。
dt = data table(i);
dt = data table(name);
経由で名前を取得します
dt << get name();
「i」を取得する機能もありますか。
経由ではなく、直接という意味です
Loc(Get Data Table List(),data table(2))
ああ、データ フィルターには、それぞれのデータ テーブルとは独立した独自のインデックスがあることに気付きました...
それでデータフィトラー[i]を使用して特定のデータ フィルターにアクセスすることはできません (データ テーブル -> i --> データ フィルター経由) ?
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法Data Filter[i]
いいね!
これはどこに文書化されていますか?
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法ふざけて、簡単な解決策を見つけました:
For( i = N Items( Get Window List() ), i >= 1, i--,
Try(
Data Filter[i] << Close;<BR /> Data Table[i] << Clear Row States // optional, if you want to<BR /> )<BR />);Data Filter[i] 構文についてはまったく知りませんでした。 シンプルにします。
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法どうもありがとう、gz。
xpath関数は素晴らしいです! 偶然にも、私は XML のバックグラウンドを持っており、過去に xpath を使用したことがあります。 しかし、JMP でこのように使用できるとはまったく知りませんでした。また、これまでディスプレイ ツリーをナビゲートするのは難しいと感じていました。 だから、これは本当の発見です。 非常に役立ちます!
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法@ジョン_マッデン、
ある時点でリセット選択ボタンのみを押したい場合は、スクリプトを次に示します。
このスクリプト
- テーブル データ フィルタを検索します。
- 見つかった場合は、「選択をリセット」というタイトルの表示されたボタンを探します。
- ボタンが見つかった場合は、それをクリックします。
Names Default to Here(1);
dt = current data table();
dtname = dt << get name;
winList = get window List();
found = 0; _xzz=empty();
For(i=nitems(winList), i>=1 & !found, i--,
nme = winList[i] << Get Window Title;
If(Starts With(nme,"Data Filter") & Contains(nme,dtname),
found =1;
_xzz = winList[i] <<XPATH> 0, _xzz[1] << Click);
);
);</XPATH>
このアクションをスクリプトの開始時よりも多く実行したい場合は、いつ実行する必要があるかを定義するハンドラーまたはサブスクリプションが必要になります。
それが役立つことを願っています。
XPath 構文は少し奇妙に見えるかもしれませんが、JMP レポート ツリー構造には XML 記述が関連付けられているため、非常に強力です。の第 6 章「スクリプト可能オブジェクトと XPath」セクション用に作成されたスクリプトを添付しました。 JSL Companion、JMP スクリプト言語のアプリケーション、第 2 版. このスクリプトは、限定的な紹介、いくつかの簡単な例、および詳細を確認するためのリンクを提供します。
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法@ジョン_マッデン、
あなたがどのような行動を望んでいるかは私には明らかではありません。 例えば:
- 例 1: Big Class が開いていて、関連する Data Filter が列 age にあり、13 歳と 14 歳がフィルターで選択されているとします。 次に、別のアプリケーションで 15 歳の女性が選択されました。 [リセット] ボタンが表示されます。 クリックすると、テーブル データ フィルタで定義されたテーブル セレクションが返されます。 それはあなたが望むものですか?
- 例 2: 例 1 と同じ開始シナリオですが、ユーザーがデータ テーブルからいくつかの行を削除します。 [リセット] ボタンは表示されず、以前の選択はデータ フィルターに表示されなくなります。
データフィルターとテーブルには「ハンドラー」と呼ばれるメソッド/関数があります
- データ フィルタ ハンドラの作成
- 行状態ハンドラの作成
- サブスクライブ (データ テーブル用)
定義/有効化すると、行の状態が変化したり、行が削除されたりした場合にアクションを実行できます。
[リセット] ボタンに興味があるだけの場合は (まだテストしていません)、送信した前のスクリプトを変更してデータ フィルターを見つけることができ、[リセット] ボタンが折りたたまれていない (表示されている) 場合は、クリックすることができます。それに送信されます。 ただし、変更されたスクリプトを送信する前に、予想されるアクションのより良い説明が役立つでしょう。
もう 1 つの考慮事項として、ユーザーがレポートにローカル データ フィルターを追加した場合、テーブルにデータ フィルターがある場合は、レポートのローカル データ フィルターからのユーザーの選択が反映されません。
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法それは機能しますが、何が起こっているのかをもう少し詳しく理解したと思います。これは、別の解決策を示唆している可能性があります.
フィルターを使用してテーブルを作成し、テーブルの行の選択を別の場所で変更すると (これは私の場合です)、データ フィルターに次のように表示されます。


必要なのは、「選択をリセット」ボタンを押すのと同等のスクリプトだと思います。
これは可能ですか?
Re: 新しいスクリプトの開始時に既存のテーブル データ フィルターを閉じる方法@ジョン_マッデン、
JMP 14の時点で、私が知っている唯一の方法は、ブルートフォースを使用することです。 下記参照。 ノート最初からやり直すテーブル選択状態をクリアします
Names Default to Here(1);
dt = current data table();
dtname = dt << get name;
winList = get window List();
found = 0;
For(i=nitems(winList), i>=1 & !found, i--,
nme = winList[i] << Get Window Title;
If(Starts With(nme,"Data Filter") & Contains(nme,dtname),
found =1;
(winList[i] << child << get scriptable object) << Start Over;
window(nme) << close window();
);
show(i, nme, found);
);
アプリケーションで作業していて、ユーザーがローカル データ フィルターを追加し、分析でそれを削除する必要がある場合は、XPath を使用してそれを検索し、スクリプトを取得し、見つかったフィルターを削除し、分析を実行して、保存されたスクリプトを介して復元することができます。
以下に添付されている JSL は、XPath を使用して特定の分析のデータ フィルターへのハンドルを取得する方法を示しています。
それが役立つことを願っています。