새 스크립트 시작 시 기존 테이블 데이터 필터를 닫는 방법이미 열려 있는 데이터 테이블에 필터를 추가하는 스크립트가 있습니다. 때때로 사용자는 스크립트가 호출되기 전에 해당 테이블에서 데이터 필터를 이미 (수동으로) 열었습니다.
이러한 기존 데이터 필터는 스크립트 시작 부분에서 dt << 행 상태 지우기를 수행하더라도 효과를 발휘하는 새로운 스크립트 필터를 방해하는 것 같습니다.
따라서 스크립트 시작 부분에 기존 테이블 필터를 모두 닫는 명령문을 갖고 싶습니다. 그러나 다른 사람이 이미 내 스크립트 외부에서 만든 임의의 개방형 데이터 필터를 참조하는 방법을 알 수 없습니다. 제안?
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: 새 스크립트 시작 시 기존 테이블 데이터 필터를 닫는 방법@john_madden ,
특정 지점에서 선택 재설정 버튼만 누르기를 원하는 경우 여기 스크립트가 있습니다.
이 스크립트
- 테이블 데이터 필터를 찾습니다.
- 찾으면 "Reset selection"이라는 제목의 보이는 버튼을 찾습니다.
- 버튼을 찾으면 클릭하십시오.
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: 새 스크립트 시작 시 기존 테이블 데이터 필터를 닫는 방법@john_madden ,
어떤 조치를 원하는지 명확하지 않습니다. 예를 들어:
- Ex1: Big Class가 열려 있고 관련 데이터 필터가 age 열에 있고 필터에서 13세 및 14세가 선택되었다고 가정합니다. 그런 다음 다른 애플리케이션에서 15세 여성을 선택했습니다. 재설정 버튼이 나타납니다. 클릭하면 테이블 데이터 필터에 정의된 테이블 선택을 반환합니다. 너가 원하는게 그거야?
- Ex2: Ex1과 동일한 시작 시나리오이지만 사용자가 데이터 테이블에서 몇 개의 행을 삭제합니다. 재설정 버튼이 나타나지 않고 이전 선택 항목이 더 이상 데이터 필터에 나타나지 않습니다.
데이터 필터 및 테이블에 대한 "핸들러"라는 메소드/함수가 있습니다.
- 데이터 필터 핸들러 만들기
- 행 상태 처리기 만들기
- 구독(데이터 테이블용)
일단 정의/활성화되면 행 상태가 변경되거나 행이 삭제되는 경우 조치를 취할 수 있습니다.
재설정 버튼에만 관심이 있는 경우(아직 테스트하지 않음) 내가 보낸 이전 스크립트를 수정하여 데이터 필터를 찾을 수 있으며 재설정 버튼이 축소되지 않은 경우(표시됨) 클릭이 그것으로 보냈습니다. 단, 수정된 스크립트를 보내기 전에, 예상되는 조치에 대한 더 나은 설명이 유용할 것입니다.
또 다른 고려 사항은 사용자가 보고서에 로컬 데이터 필터를 추가하는 경우 테이블과 테이블에 데이터 필터가 있는 경우 보고서의 로컬 데이터 필터에서 사용자가 선택한 항목이 반영되지 않는다는 것입니다.
Re: 새 스크립트 시작 시 기존 테이블 데이터 필터를 닫는 방법그것은 효과가 있지만 무슨 일이 일어나고 있는지 좀 더 자세히 깨달았고 다른 해결책을 제안할 수 있다고 생각합니다.
필터가 있는 테이블을 만든 다음 다른 곳에서 테이블 행 선택을 변경하면(저의 경우) 데이터 필터에 다음과 같이 나타납니다.


필요한 것은 "Reset selection" 버튼을 누르는 것과 같은 스크립트라고 생각합니다.
이것이 가능한가?
Re: 새 스크립트 시작 시 기존 테이블 데이터 필터를 닫는 방법@john_madden ,
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를 사용하여 특정 분석에서 데이터 필터에 대한 핸들을 가져오는 방법을 보여줍니다.
도움이 되길 바랍니다.