Comment créer une fenêtre de sélection modale avec sélection multipleBonjour communauté JMP,
J'ai besoin d'aide avec ce qui suit : j'ai une table ( dt ) avec une colonne numérique nominale ( Values ). Je voudrais créer une fenêtre qui affiche les valeurs uniques triées de la colonne Values . Ensuite, je voudrais sélectionner une ou plusieurs valeurs, les renvoyer et les transmettre à une fonction Select Where .
Je suis absolument débutant en JSL et votre aide est appréciée.
Pour résoudre ce problème, j'ai créé une fonction SelectNumericValues comme suit :
// 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 fenêtre avec les valeurs triées uniques est correctement rendue :

Et je peux sélectionner une ou plusieurs options. Mais je me retrouve avec ces deux erreurs :
- Envoyer un objet scriptable attendu lors de l'accès ou de l'évaluation de « Liste », {/*###*/"0", "1", "2"}
- Nom non résolu : Bouton dans l'accès ou l'évaluation de « Bouton », Button( 1 ) /*###*/
Ce qui suggère que je ne gère pas correctement les boutons dans la fonction SelectNumericValues et que je traite également de manière incorrecte les valeurs renvoyées dans la fonction Select Where .

Question supplémentaire : comment puis-je mettre en œuvre l'exigence selon laquelle au moins une option doit être sélectionnée (fermer la fenêtre modale sans aucune option sélectionnée ne devrait pas être possible, ou cela signifierait implicitement que toutes les options sont sélectionnées).
Merci!
Paul
Automatisation et scriptsFenêtresRe: Comment créer une fenêtre de sélection modale avec sélection multipleJ'ai trouvé une solution qui fonctionne. J'ai fait les erreurs suivantes :
- la fonction SelectNumericValues renvoie une liste de caractères et non de nombres.
- L'appel de la fonction Select Where nécessite que la fonction Contains corresponde à la liste de nombres.
- Cette ligne selected_values = nw << Show Window; dans la fonction SelectNumericValues provoque l'erreur liée au bouton (je pense)
Par conséquent, je dois forcer les valeurs sélectionnées à être numériques. Et je dois ajuster l'appel de fonction Select Where .
Je trouve que cela fonctionne correctement :
// 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: Comment créer une fenêtre de sélection modale avec sélection multipleJe pense que vous devriez envisager d'utiliser un filtre de données. Il effectuera l'affichage et la sélection pour vous.
Re: Comment créer une fenêtre de sélection modale avec sélection multipleMerci Jim !
Sur la base de votre recommandation, j'ai créé un script utilisant la fonction de filtrage des données. Merci de m'avoir indiqué cette fonction car elle est très utile pour le filtrage interactif des données.
La principale fonctionnalité que mon script implémente est de créer une sortie (un journal, enregistré par exemple sous forme de document PDF) basée sur les données après leur filtrage par l'utilisateur. En d'autres termes, il n'y a pas besoin ici de filtrage interactif et multivarié. En ce sens, l'approche que j'ai partagée dans cet article m'est utile.
Paul