Dynamische Suchleiste in TabellenfeldspaltenHallo,
Eine häufige Anfrage besteht darin, über den Spalten der Tabellenbox eine Art Suchleiste zu erstellen, ähnlich wie es in anderer Visualisierungssoftware gemacht wird.
Das Ziel wäre, die Datentabelle sehr einfach anhand der verschiedenen Filter filtern zu können.
Wenn ich beispielsweise in meinem Beispiel unten „Ausstehend“ in das Suchfeld über der Spalte „Validierungsstatus“ und „Ja“ in das Suchfeld über der Spalte „Verteilungsbestätigung“ eingebe, wird die Tabelle anhand dieser beiden Filter gefiltert: alle Zeilen, die im Validierungsstatus „Ausstehend“ und in der anderen Spalte „Ja“ enthalten.
Ich weiß, dass wir einen Datenfilter verwenden könnten und dass es bei meiner Frage eigentlich um JSL-Skripting geht, aber hatte jemand die gleiche Anfrage und konnte die Funktion erfolgreich verallgemeinern, um diese Art von Tabellenfeld zu generieren?

Automatisierung und SkriptingBetreff: Dynamische Suchleiste in TabellenfeldspaltenDies ist bereits ein Eintrag in der JMP-Wunschliste. Sie können ihn hier ansehen.
Betreff: Dynamische Suchleiste in TabellenfeldspaltenEs ist nicht allzu kompliziert, eine Basisversion davon zu erstellen, aber eine robuste und ansprechende Version zu erstellen, wird höchstwahrscheinlich etwas komplizierter. Das folgende Beispiel ist ein Beispiel für die Basisversion.
Mehr anzeigen...
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"})
)
)
)
);
Betreff: Dynamische Suchleiste in TabellenfeldspaltenVielen Dank, genau das ist es! Die Basisversion löst mein Problem bereits, sie ist perfekt.
Betreff: Dynamische Suchleiste in TabellenfeldspaltenNur aus Neugier: Wäre es möglich, auch mit einem Datentabellenfeld zu arbeiten?
Betreff: Dynamische Suchleiste in TabellenfeldspaltenWenn Table Box Datentabellen-Spaltenfelder verwendet, scheint es Filter Where nicht mehr zu unterstützen, was die Nutzung verhindern würde. Was ist der Grund für die Verwendung von Data Table Box? Wünschen Sie die Möglichkeit zur Zeilenauswahl, die mit der Originaltabelle verknüpft ist, oder etwas anderes?
Betreff: Dynamische Suchleiste in TabellenfeldspaltenEs ist nur so, dass ich mit der Datentabellenbox die Datentabelle direkt hatte, während ich mit der Tabellenbox meine Tabelle in eine Tabellenbox umwandeln musste. Tatsächlich hatte ich versucht, Ihr Skript für die Datentabelle anzupassen, blieb aber beim Filter hängen und wusste nicht, ob ich es falsch gemacht hatte.
Betreff: Dynamische Suchleiste in TabellenfeldspaltenSie können die Datentabelle in eine Tabellenbox (ohne ausgefallene Datentabellen-Spaltenfelder) konvertieren, indem Sie << 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);
Betreff: Dynamische Suchleiste in TabellenfeldspaltenVielen Dank !!!!! Ich hatte keine Ahnung, dass es so einfach ist, einen Bericht zu erhalten und ihn zu konvertieren!