Come faccio a creare una finestra di selezione modale con selezione multipla?Ciao comunità JMP,
Ho bisogno di aiuto con quanto segue: ho una tabella ( dt ) con una colonna numerica nominale ( Values ). Vorrei creare una finestra che visualizzi i valori univoci ordinati della colonna Values . Quindi vorrei selezionare uno o più valori, restituirli e passarli a una funzione Select Where .
Sono assolutamente un principiante in JSL e il tuo aiuto è apprezzato.
Per risolvere questo problema, ho creato la funzione SelectNumericValues come segue:
// 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 finestra con i valori ordinati univoci viene visualizzata correttamente:

E posso selezionare una o più opzioni. Ma finisco con questi due errori:
- Invia Aspetta Oggetto Scriptable in accesso o valutazione di 'List', {/*###*/"0", "1", "2"}
- Nome non risolto: Pulsante in accesso o valutazione di 'Pulsante' , Pulsante( 1 ) /*###*/
Ciò suggerisce che non sto gestendo correttamente i pulsanti nella funzione SelectNumericValues e che sto anche gestendo in modo errato i valori restituiti nella funzione Select Where .

Un'ulteriore domanda: come potrei implementare il requisito che prevede la selezione di almeno un'opzione (chiudere la finestra modale senza aver selezionato alcuna opzione non dovrebbe essere possibile oppure significherebbe implicitamente che tutte le opzioni sono selezionate).
Grazie!
Paolo
Automazione e scriptingFinestreRe: Come faccio a creare una finestra di selezione modale con selezione multipla?Ho trovato una soluzione funzionante. Ho fatto i seguenti errori:
- la funzione SelectNumericValues restituisce un elenco di caratteri, non di numeri.
- la chiamata alla funzione Select Where richiede che la funzione Contains corrisponda all'elenco di numeri.
- Questa riga selected_values = nw << Show Window; nella funzione SelectNumericValues causa l'errore relativo al pulsante (penso)
Di conseguenza, devo forzare i valori selezionati a numerici. E devo adattare la chiamata alla funzione Select Where .
Trovo che questo funzioni correttamente:
// 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: Come faccio a creare una finestra di selezione modale con selezione multipla?Penso che dovresti prendere in considerazione l'utilizzo di un filtro dati. Farà la visualizzazione e la selezione per te.
Re: Come faccio a creare una finestra di selezione modale con selezione multipla?Grazie Jim!
Sulla base della tua raccomandazione ho creato uno script usando la funzione Data Filter. Grazie per avermelo indicato, perché è una funzione molto utile per il filtraggio interattivo dei dati.
La funzionalità principale che il mio script sta implementando è quella di creare un output (un diario, salvato ad esempio come documento pdf) basato sui dati dopo che sono stati filtrati dall'utente. In altre parole, non c'è bisogno qui di alcun filtraggio interattivo e multivariato. In tal senso, l'approccio che ho condiviso in questo post mi è utile.
Paolo