테이블 상자 열의 동적 검색 창안녕하세요,
자주 요청되는 사항 중 하나는 다른 시각화 소프트웨어에서 수행하는 작업과 유사하게 테이블 상자 열 위에 일종의 검색 창을 만들어 달라는 것입니다.
목표는 다양한 필터를 사용하여 데이터 테이블을 매우 쉽게 필터링할 수 있도록 하는 것입니다.
예를 들어, 아래 예에서 "검증 상태" 열 위의 검색 상자에 "보류"를 입력하고 "배포 확인" 열 위의 검색 상자에 "예"를 입력하면 다음 두 가지 필터가 주어진 테이블에서 필터링됩니다. 즉, 검증 상태에 "보류"가 포함되어 있고 다른 열에 "예"가 포함된 모든 행입니다.
데이터 필터를 사용할 수 있다는 것은 알고 있고, 제가 묻는 것은 실제로 JSL 스크립팅에 관한 것이지만, 이런 종류의 테이블 상자를 생성하는 함수를 일반화하는 데 성공한 사람이 있습니까?

자동화 및 스크립팅Re: 테이블 상자 열의 동적 검색 창이 항목은 이미 JMP 위시리스트에 등록되어 있습니다. 여기에서 확인하실 수 있습니다.
Re: 테이블 상자 열의 동적 검색 창이런 기본적인 버전을 만드는 건 그렇게 어렵지 않지만, 견고하고 보기 좋은 버전을 만드는 건 아마 꽤 복잡해질 겁니다. 아래 예시는 기본적인 측면입니다.
더 보기...
Names Default To Here(1);
filter_tablebox = function({tb, options},
aa = Associative Array(tb << get names, options << get text);
filter_expr = {};
For Each({{colname, filter_text}}, aa,
If(Is Missing(filter_text),
continue(); // skip over
);
Insert Into(filter_expr, EvalExpr(Contains(Lowercase(Expr(As Name(colname))), Expr(filter_text))));
);
If(N Items(filter_expr) == 0,
tb << Reset Filter;
return(1);
);
If(N Items(filter_expr) == 1,
filter_expr = filter_expr[1];
,
Substitute Into(filter_expr, Expr(List()), Expr(And()));
);
Eval(EvalExpr(tb << Filter Where(Expr(Name Expr(filter_expr)))));
return(1);
);
nw = New Window("Example",
ob = Outline Box("Table",
V List Box(
hlb = H List Box(
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(51)),
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(80)),
),
tb1 = Table Box(
String Col Box("Mountain", {"K2", "Delphi", "Kilimanjaro", "Grand Teton"}),
String Col Box("TEST", {"x", "y", "z", "a"})
)
)
)
);
Re: 테이블 상자 열의 동적 검색 창정말 감사합니다. 바로 그겁니다! 기본 버전만으로도 제 문제가 해결됐어요. 완벽해요.
Re: 테이블 상자 열의 동적 검색 창궁금해서 묻는 건데, 데이터 테이블 상자로도 작업할 수 있을까요?
Re: 테이블 상자 열의 동적 검색 창Table Box에서 Data Table Col Box를 사용하는 경우, 더 이상 Filter Where 기능을 지원하지 않는 것 같습니다. 따라서 이 기능을 사용할 수 없습니다. Data Table Box를 사용하는 이유는 무엇인가요? 원본 테이블에 연결된 행 선택 기능을 원하시나요, 아니면 다른 기능이 필요하신가요?
Re: 테이블 상자 열의 동적 검색 창데이터 테이블 상자에서는 데이터 테이블이 바로 표시되는 반면, 테이블 상자에서는 테이블을 테이블 상자로 변환해야 했습니다. 실제로 데이터 테이블 스크립트를 수정하려고 했는데, 필터에서 막혀서 제가 잘못한 건지 알 수 없었습니다.
Re: 테이블 상자 열의 동적 검색 창<< get as report를 사용하여 데이터 테이블을 테이블 상자로 변환할 수 있습니다(특별한 데이터 테이블 열 상자 없이)
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(4),
Compress File When Saved(1),
New Column("Mountain",
Character,
"Nominal",
Set Values({"K2", "Delphi", "Kilimanjaro", "Grand Teton"})
),
New Column("TEST", Character, "Nominal", Set Values({"x", "y", "z", "a"}))
);
filter_tablebox = function({tb, options},
aa = Associative Array(tb << get names, options << get text);
filter_expr = {};
For Each({{colname, filter_text}}, aa,
If(Is Missing(filter_text),
continue(); // skip over
);
Insert Into(filter_expr, EvalExpr(Contains(Lowercase(Expr(As Name(colname))), Expr(filter_text))));
);
If(N Items(filter_expr) == 0,
tb << Reset Filter;
return(1);
);
If(N Items(filter_expr) == 1,
filter_expr = filter_expr[1];
,
Substitute Into(filter_expr, Expr(List()), Expr(And()));
);
Eval(EvalExpr(tb << Filter Where(Expr(Name Expr(filter_expr)))));
return(1);
);
nw = New Window("Example",
ob = Outline Box("Table",
V List Box(
hlb = H List Box(
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(80)),
Text Edit Box("", << Set Script(filter_tablebox(tb1, hlb << XPath("//TextEditBox"))), << Set Width(51)),
),
rep = dt << get as report; // repo is border box and under it is table box
)
)
);
tb1 = rep << child;
rep << Left (0);
rep << Top(0);
rep << Bottom(0);
Re: 테이블 상자 열의 동적 검색 창정말 감사합니다!!!!! 보고서를 받아서 변환하는 게 이렇게 간단할 줄은 몰랐어요!