Cómo cerrar el filtro de datos de tabla existente al comienzo de un nuevo scriptTengo un script que agrega un filtro a una tabla de datos que ya está abierta. A veces, un usuario ya ha abierto (manualmente) un filtro de datos en esa tabla antes de invocar el script.
Tal filtro de datos existente parece interferir con mi nuevo filtro con secuencia de comandos que toma efecto, aunque hago un dt << Borrar estados de fila al comienzo de mi secuencia de comandos.
Por lo tanto, me gustaría tener una declaración al comienzo de mi secuencia de comandos que cierre todos los filtros de tabla existentes. Pero no sé cómo hacer referencia a un filtro de datos abierto arbitrario que otra persona ya ha creado fuera de mi propio script. ¿Sugerencias?
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo scriptEncontré en el índice de secuencias de comandos que uno puede hacer referencia a una tabla de datos a través de
dt = data table(i);
dt = data table(name);
y obtener el nombre a través de
dt << get name();
¿Existe también una función para obtener "i".
Me refiero directamente, no a través de
Loc(Get Data Table List(),data table(2))
Ah, acabo de darme cuenta de que los filtros de datos tienen su propio índice, independiente de las respectivas tablas de datos...
Asi que Filtro de datos[i] no se puede usar para acceder a un filtro de datos específico (a través de la tabla de datos-> i --> filtro de datos)?
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo scriptData Filter[i]
¡Frío!
¿Dónde está documentado esto?
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo scriptJugando, encontré una solución simple:
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 />);No tenía idea acerca de la sintaxis de Data Filter[i]. Lo hace simple.
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo scriptMuchas gracias gz.
¡La función xpath es genial! Da la casualidad de que vengo de un entorno XML y he usado xpath en el pasado. Pero desconocía por completo que pudiera usarlo de esta manera en JMP.Y me ha resultado difícil navegar por los árboles de visualización hasta ahora. Así que este es un verdadero hallazgo. ¡Muy útil!
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo script@John Madden ,
Si solo desea presionar el botón de selección de reinicio en algún momento, aquí hay un script.
este guion
- busca un filtro de datos de tabla.
- Si lo encuentra, busca un botón visible con el título "Restablecer selección".
- Si se encuentra el botón, haga clic en él.
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>
Si desea que esta acción se realice más que al comienzo de su secuencia de comandos, necesitará un controlador o una suscripción para definir cuándo debe ejecutarse.
Espero que ayude.
La sintaxis de XPath puede parecer un poco extraña, pero es muy poderosa ya que la estructura de árbol de informes de JMP tiene una descripción XML asociada.Adjunto un script escrito para el capítulo 6, sección "Objeto programable y XPath" de JSL Companion, aplicaciones del lenguaje de scripting JMP, segunda edición . El script proporciona una introducción limitada, algunos ejemplos simples y enlaces para obtener más información.
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo script@John Madden ,
No me queda claro qué acción quieres. Por ejemplo:
- Ej. 1: supongamos que Big Class estaba abierta, el filtro de datos asociado estaba en la columna edad y se seleccionaron niños de 13 y 14 años en el filtro. Luego, otra aplicación seleccionó a mujeres de 15 años. Aparecería el botón Restablecer. Si se hace clic, devuelve la selección de tabla definida en el filtro de datos de la tabla. ¿Es eso lo que quieres?
- Ex2: el mismo escenario inicial que Ex1, pero un usuario elimina un par de filas de la tabla de datos. El botón Restablecer no aparece y las selecciones anteriores ya no aparecen en el Filtro de datos.
Hay métodos/funciones llamados "controladores" para un filtro de datos y una tabla
- Crear controlador de filtro de datos
- Crear controlador de estado de fila
- Subscribe (para una tabla de datos)
Una vez definido/habilitado, se pueden tomar medidas si los estados de las filas cambian, las filas se eliminan y más.
Si solo está interesado en el botón Restablecer, sospecho (aún no lo he probado), la secuencia de comandos anterior que envié se puede modificar para encontrar el Filtro de datos y si el botón Restablecer no está colapsado (es visible) se puede hacer un clic enviado a él. Sin embargo, antes de enviar un script modificado, una mejor descripción de la acción esperada sería útil.
Otra consideración, si un usuario agrega un filtro de datos locales en un informe, la tabla y si tiene un filtro de datos no refleja las selecciones del usuario del filtro de datos locales del informe.
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo scriptEso funciona, pero creo que me di cuenta con un poco más de detalle de lo que está sucediendo, lo que podría sugerir otra solución.
Si crea una tabla con un filtro y luego cambia la selección de la fila de la tabla en otro lugar (este es mi caso), aparece lo siguiente en el filtro de datos:


Creo que lo que necesito es el script equivalente a presionar el botón "Restablecer selección".
es posible?
Re: Cómo cerrar el filtro de datos de una tabla existente al comienzo de un nuevo script@John Madden ,
A partir de JMP 14, el único método que sé hacer es a través de la fuerza bruta. Vea abajo. Nota Comenzar de nuevo borra el estado de selección de tabla
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);
);
Si está trabajando con una aplicación y el usuario agrega un filtro de datos local y sus análisis necesitan que se elimine, puede usar XPath para encontrarlo, obtener el script, eliminar el filtro encontrado, eliminar su análisis y restaurar a través del script guardado.
El JSL adjunto a continuación muestra cómo usar XPath para manejar un filtro de datos en un análisis específico.
Espero que ayude.