¿Cómo creo una ventana de selección modal con selección múltiple?Hola comunidad JMP,
Necesito ayuda con lo siguiente: tengo una tabla ( dt ) con una columna numérica nominal ( Valores ). Me gustaría crear una ventana que muestre los valores únicos ordenados de la columna Valores . Luego, me gustaría seleccionar uno o varios valores, devolverlos y pasarlos a una función Seleccionar Donde .
Soy absolutamente un principiante en JSL y agradezco su ayuda.
Para resolver este problema, creé una función SelectNumericValues de la siguiente manera:
// function to create a modal window with selection functionality
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<
// call my function with table dt and nominal numeric column "Values"
selected_values = SelectNumericValues(dt, "Values");
dt_select = dt << Select Where( :Values == selected_values)
La ventana con los valores ordenados únicos se representa correctamente:

Y puedo seleccionar una o varias opciones, pero me aparecen estos dos errores:
- Enviar espera un objeto programable en el acceso o la evaluación de 'Lista', {/*###*/"0", "1", "2"}
- Nombre sin resolver: Botón en acceso o evaluación de 'Botón', Botón( 1 ) /*###*/
Lo que sugiere que no estoy manejando correctamente los botones en la función SelectNumericValues y que también estoy tratando incorrectamente los valores devueltos en la función Select Where .

Como pregunta adicional: ¿cómo implementaría el requisito de que se debe seleccionar al menos una opción (cerrar la ventana modal sin ninguna opción seleccionada no debería ser posible o implicaría implícitamente que todas las opciones están seleccionadas)?
¡Gracias!
Pablo
Automatización y scriptingVentanasRe: ¿Cómo creo una ventana de selección modal con selección múltiple?Encontré una solución que funciona. Cometí los siguientes errores:
- La función SelectNumericValues devuelve una lista de caracteres, no de números.
- La llamada a la función Select Where requiere que la función Contiene coincida con la lista de números.
- Esta línea selected_values = nw << Show Window; en la función SelectNumericValues provoca el error relacionado con el botón (creo)
Como resultado, necesito convertir los valores seleccionados en numéricos y ajustar la llamada a la función Select Where .
Encuentro que esto funciona correctamente:
// Function to generate the user selection window for numeric values
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<I am happy to see additional improvements from other users.Re: ¿Cómo creo una ventana de selección modal con selección múltiple?Creo que deberías considerar el uso de un filtro de datos. Este hará la visualización y la selección por ti.
Re: ¿Cómo creo una ventana de selección modal con selección múltiple?¡Gracias Jim!
Basándome en tu recomendación, creé un script que utiliza la función Filtro de datos. Gracias por indicarme cuál es, ya que es una función muy útil para el filtrado interactivo de datos.
La principal funcionalidad que implementa mi script es crear una salida (un diario, guardado, por ejemplo, como un documento PDF) en función de los datos después de que el usuario los filtre. En otras palabras, no hay necesidad de ningún filtrado interactivo y multivariable. En ese sentido, el enfoque que he compartido en esta publicación me resulta útil.
Pablo