Boîte de dialogue dynamique pour sélectionner différentes observationsJ'ai les données suivantes. Je souhaite créer une boîte de dialogue qui affichera différents types de jeux disponibles dans la colonne des jeux et permettra à l'utilisateur de sélectionner le type de chaque jeu. Une fois que l'utilisateur a sélectionné le type pour chaque jeu et cliqué sur OK, il doit mettre à jour la table d'origine avec une nouvelle colonne ajoutée ayant le type de jeu pour chaque jeu. De plus, si possible, le jeu que l'utilisateur a sélectionné pour un type de jeu particulier, ce jeu doit être masqué de la liste des jeux dans la boîte de dialogue, pour éviter les doublons.
Vous trouverez ci-dessous mon tableau original et final. La boîte de dialogue interactive devrait ressembler à l'image ci-jointe où l'utilisateur peut faire glisser et déposer les choix de jeu disponibles pour le type de jeu respectif. Le bouton Ok ne devrait s'activer qu'une fois tous les jeux sélectionnés.
S'il vous plaît aidez-moi à créer un script .jsl pour le même.
Tableau d'origine :
| Nom | Jeu |
| UN | Football |
| UN | échecs |
| UN | Badminton |
| B | Football |
| C | Échecs |
| B | Tennis de table |
| D | Rien |
Tableau final :
| Nom | Jeu | Type de jeu |
| UN | Football | Extérieur |
| UN | Échecs | intérieur |
| UN | Badminton | intérieur |
| B | Football | Extérieur |
| C | Échecs | intérieur |
| B | Tennis de table | intérieur |
| D | rien | N'est pas applicable |
Merci 

Re : boîte de dialogue dynamique pour sélectionner différentes observationsMerci @gzmorgan0
Apprécier ton aide.
J'utilise JMP 14.Re : boîte de dialogue dynamique pour sélectionner différentes observations@Rajat ,
Ci-joint un script modifié. Éléments à noter :
- Utilise un ComboBox pour la liste des options de catégorie, défini par une liste interne au script.
- Les affectations sont faites par des sélections dans la liste des sources, la catégorie actuelle dans le ComboBox et en appuyant sur le bouton Attribuer
- L'affectation est répertoriée sous Nom du jeu > Catégorie
- Un bouton Mettre à jour a été ajouté afin que le tableau puisse être mis à jour progressivement
- La liste des sources est créée uniquement pour les jeux auxquels aucun type de jeu n'a été attribué
- Les actions de suppression et d'écriture dans la table ont dû être modifiées. Désormais, les éléments de lb1, la ListBox d'affectation, ont 2 éléments d'information dans une seule chaîne. La fonction Word(n,string,delimiter) permet d'extraire les informations pertinentes.
La capture d'écran affiche qu'une affectation a été effectuée. Pour cette vue, si l'utilisateur appuie sur attribuer, le badminton et le football seront attribués en extérieur.
Cette interface réduit le nombre de variables pour les boîtes d'affichage.Créer une interface utile nécessite de comprendre l'application, les besoins et l'utilisation, de connaître quelques notions de base ou de trouver un exemple de code proche de ce que vous voulez et de le comprendre. Notez qu'il existe de nombreuses alternatives à ce script.Bonne chance!

JSL pour la mise en page de la boîte de dialogue. Le script complet est joint.
//--Dialog
usr = New Window("Using List Boxes", <<MODAL></MODAL>Re : boîte de dialogue dynamique pour sélectionner différentes observations@Rajat ,
Vous n'avez pas mentionné la version de JMP que vous utilisez.Si JMP 14, dans le menu principal de JMP, sélectionnez Aide > Livres > Guide de création de scripts JMP . Il s'agit de la version PDF d'un livre relié. Chapitre 11, à partir de la page 517, la section "Construire des fenêtres personnalisées" commence.C'est une très bonne source d'apprentissage.
Aussi Aide > Index des scripts > Sur le bouton gris du haut, appuyez sur et sélectionnez Boîtes d'affichage .Sur le côté gauche, sélectionnez un constructeur de boîte d'affichage et sur la droite, voyez la syntaxe, puis il y a 1 ou plusieurs exemples de scripts simples que vous pouvez exécuter, ou copier et coller et créer votre propre script, pour apprendre comment chaque constructeur fonctionne.Je vous propose de rechercher : ButtonBox , ListBoxBox qui sont des constructeurs. Panneau électrique , LineUpBox , Zone de liste (HListBox, VListBox) sont des conteneurs utilisés pour organiser la disposition de la boîte de dialogue.
Pour vraiment apprendre à composer des scripts, vous devez vraiment connaître les outils et ce parcours d'apprentissage peut prendre du temps.Cependant, de nombreux scripteurs apprennent en prenant des scripts existants, en lisant, en exécutant, en modifiant pour répondre à leurs besoins,
Puisque vous avez dit que cela prendrait de nombreuses variables, je suppose que vous avez besoin de plus de 3 catégories (intérieur, extérieur, rien). Comme je l'ai dit dans mon dernier message, il existe de nombreuses façons de procéder et j'ai utilisé du code copier-coller.Si vous avez plusieurs catégories, je modifierais mon script avec l'exemple fourni par @pmroz . J'aurais utilisé un ComboBox pour sélectionner dans une liste de catégories, et une seule boîte à boutons (Assigner) et une seule boîte d'affectation.Si j'ai le temps, je modifierai mon script et le joindrai.
JMP dans JMP Scripting, 2 et Compagnon JSL, Applications du langage de script JMP, 2e édition sont deux autres livres que vous pourriez trouver utiles pour apprendre JSL.
Re : boîte de dialogue dynamique pour sélectionner différentes observationsMerci @gzmorgan0
Je ne recherche que cette solution.
J'essaie de comprendre le code. On dirait que nous devons créer autant de variables. Pouvez-vous s'il vous plaît me suggérer une bonne série de didacticiels vidéo (de préférence) ou tout livre auquel je peux me référer pour apprendre à créer des boîtes de dialogue interactives à l'aide de jsl. Je suis au tout début de la création de ces boîtes de dialogue.
Merci 
Re : boîte de dialogue dynamique pour sélectionner différentes observations@Rajat ,
La plupart des objets et fonctions JMP Scripting Language, JSL pour créer des boîtes de dialogue personnalisées ciblent des colonnes de table. Considérez que les fenêtres de dialogue intégrées de JMP demandent des colonnes. Certains objets peuvent être utilisés pour une sélection personnalisée, mais ces objets "valeurs" nécessitent généralement plus de programmation.Par exemple, un objet ColListBox a une interface glisser-déposer intégrée : un nom de colonne peut être glissé vers un autre ColListBox, et les noms de colonne seront uniques.
JSL fournit des objets ListBox(), cependant, c'est maintenant le travail des scripteurs d'assurer l'unicité. Par exemple, selon la façon dont vous codez la tâche, vous devez gérer que Football n'a qu'une seule classification et que le nom est utilisé une seule fois.
Une méthode consiste à ne pas utiliser de boîte de dialogue, mais à créer un tableau récapitulatif des jeux uniques et du type de jeu, à demander à l'utilisateur de mettre à jour ce tableau raccourci, puis à mettre à jour le tableau source. Cette méthode est similaire aux anciennes interfaces de mise à jour de base de données.
J'ai joint un script très simple et pas si élégant (code de force brute répété) pour terminer la tâche décrite.J'ai fait simple puisque vous n'avez pas lu le livre.L'interface de script comprend un bouton de suppression, au cas où un jeu aurait été accidentellement sélectionné pour un type incorrect.Au lieu de créer une fonction d'union, afin que la liste des jeux n'ait pas de doublons, et des fonctions pour s'assurer qu'un jeu n'est pas classé à la fois en intérieur et en extérieur, j'ai construit le code pour supprimer le jeu de la liste source une fois qu'une catégorie a été sélectionnée.
Vous devriez en savoir plus sur le tableau associatif, une liste à clés, ListBox, ButtonBox et Set Function().
Vous trouverez ci-dessous une capture d'écran de la boîte de dialogue et de la partie boîte de dialogue du script. Le script complet est joint.Notez que cela pourrait être fait avec un DataFilterBox, mais le ListBox() est plus facile à utiliser. BTW cela a été testé sur JMP13 et 14.

//--Dialog
usr = New Window("Using List Boxes", <<MODAL></MODAL>Re : boîte de dialogue dynamique pour sélectionner différentes observationsSalut @pmroz
Merci d'avoir répondu.
Dans mon jeu de données actuel, j'ai 1000 jeux avec 25 jeux uniques et je n'ai que trois catégories 1.Intérieur 2.Extérieur 3.Non applicable. Avec cette approche, je dois sélectionner le type de jeu pour chaque 1000 jeux. J'ai également essayé avec un jeu unique mais cela n'a pas fonctionné.
Pouvons-nous avoir une fenêtre qui n'affiche que les valeurs uniques des jeux ? En outre, il devrait permettre une sélection multiple de jeux, puis sélectionner le type de jeu pour toutes les sélections multiples de jeux, car la sélection du type de jeu pour chaque valeur unique de jeu est fastidieuse si le nombre de jeux uniques augmente.Re : boîte de dialogue dynamique pour sélectionner différentes observationsVoici une solution qui utilise une boîte de table avec une boîte de col.Ajustez à vos types de jeu.
dt = New Table( "Games", Add Rows( 7 ),
New Column( "Name", Character, "Nominal",
Set Values( {"A", "A", "A", "B", "C", "B", "D"} ) ),
New Column( "Game", Character( 16 ), "Nominal", Set Values(
{"Football", "chess", "Badminton", "Football", "Chess", "Table Tennis", "Nothing"} ) ),
new column("Game Type", Character, "Nominal")
);
game_list = dt:game << get values;
ngames = nitems(game_list);
selected_type = {};
type_list = {"No choice made", "Outdoor", "Indoor", "Nothing"};
game_type_cb = {};
game_type_colb = col box("Game Type");
for (i = 1, i <= ngames, i++,
selected_type[i] = "No choice made";
game_type_cb[i] = combo box(type_list);
game_type_colb << append(game_type_cb[i]);
);
nw = new window("Game Type Setting",
panel box("Select game type for each game",
tb = table box(
string col box("Game", game_list),
game_type_colb
),
),
panel box("Actions",
hlistbox(
okb = button box("OK",
for (i = 1, i <= ngames, i++,
selected_type[i] = game_type_cb[i] << get selected();
dt:game type[i] = selected_type[i];
);
show(selected_type);
nw << close window;
),
canb = button box("Cancel",
nw << close window;
),
)
)
);