Barra de búsqueda dinámica en las columnas del cuadro de tablaHola,
Una solicitud frecuente es crear una especie de barra de búsqueda encima de las columnas del cuadro de la tabla, similar a lo que se hace en otro software de visualización.
El objetivo sería poder filtrar muy fácilmente la tabla de datos en los diferentes filtros.
Por ejemplo, en mi ejemplo a continuación, si ingreso "Pend" en el cuadro de búsqueda en la parte superior de la columna "Estado de validación" y "Sí" en el cuadro de búsqueda en la parte superior de la columna "Confirmación de distribución", filtrará la tabla dados estos dos filtros: cada fila que contenga "Pend" en el estado de validación y "sí" en la otra columna.
Sé que podríamos usar el filtro de datos, y que lo que pregunto es realmente sobre scripts JSL, pero ¿alguien ha tenido una solicitud similar y ha logrado generalizar la función para generar este tipo de tablebox?

Automatización y scriptingRe: Barra de búsqueda dinámica en las columnas del cuadro de tablaEsta ya está en la lista de deseos de JMP. Puedes verla aquí.
Re: Barra de búsqueda dinámica en las columnas del cuadro de tablaCrear una versión básica de algo como esto no es muy complicado, pero crear una robusta y atractiva probablemente se complique un poco. El ejemplo a continuación es básico.
Ver más...
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: Barra de búsqueda dinámica en las columnas del cuadro de tablaMuchas gracias, ¡eso es exactamente! La versión básica ya solucionó mi problema; es perfecta.
Re: Barra de búsqueda dinámica en las columnas del cuadro de tablaSolo por curiosidad, ¿sería posible trabajar también con un cuadro de tabla de datos?
Re: Barra de búsqueda dinámica en las columnas del cuadro de tablaSi Table Box usa cuadros de columnas de tabla de datos, parece que ya no admite la función "Filtrar dónde", lo que le impediría usarla. ¿Por qué usar Data Table Box? ¿Desea tener la capacidad de seleccionar filas vinculadas a la tabla original o algo más?
Re: Barra de búsqueda dinámica en las columnas del cuadro de tablaEs solo que con el cuadro de tabla de datos, tenía la tabla de datos directamente, mientras que con el cuadro de tabla, tuve que convertir mi tabla en un cuadro de tabla. De hecho, intenté ajustar tu script para la tabla de datos, pero me quedé atascado en el filtro y no sabía si era yo quien lo estaba haciendo mal.
Re: Barra de búsqueda dinámica en las columnas del cuadro de tablaPuede convertir una tabla de datos en un cuadro de tabla (sin cuadros de columnas de tabla de datos sofisticados) usando << obtener como informe
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: Barra de búsqueda dinámica en las columnas del cuadro de tablaMuchas gracias!!!!! No tenía idea de que fuera tan sencillo como obtener un informe para convertirlo!