Finestra di dialogo dinamica per la selezione di diverse osservazioniHo i seguenti dati. Voglio creare una finestra di dialogo che mostrerà diversi tipi di giochi disponibili nella colonna del gioco e darà all'utente la possibilità di selezionare il tipo di ogni gioco. Una volta che l'utente ha selezionato il tipo per ogni gioco e ha fatto clic su OK, dovrebbe aggiornare la tabella originale con una nuova colonna aggiunta con il tipo di gioco per ogni gioco. Inoltre, se possibile, il gioco che l'utente ha selezionato per un particolare tipo di gioco, quel gioco dovrebbe nascondersi dall'elenco dei giochi nella finestra di dialogo, per evitare duplicazioni.
Di seguito è riportato il mio tavolo originale e finale. La finestra di dialogo interattiva dovrebbe apparire come nell'immagine allegata in cui l'utente può trascinare e rilasciare le scelte di gioco disponibili per il rispettivo tipo di gioco. Il pulsante Ok dovrebbe attivarsi solo dopo aver selezionato tutti i giochi.
Per favore aiutami a creare uno script .jsl per lo stesso.
Tabella originale:
| Nome | Gioco |
| UN | Calcio |
| UN | scacchi |
| UN | Badminton |
| B | Calcio |
| C | Scacchi |
| B | Ping Pong |
| D | Niente |
Tavolo finale:
| Nome | Gioco | Tipo di gioco |
| UN | Calcio | all'aperto |
| UN | Scacchi | interno |
| UN | Badminton | interno |
| B | Calcio | all'aperto |
| C | Scacchi | interno |
| B | Ping Pong | interno |
| D | Niente | Non applicabile |
Grazie 

Re: Dinamico Finestra di dialogo per la selezione di diverse osservazioniGrazie @gzmorgan0
Apprezzo il tuo aiuto.
Sto usando JMP 14.Re: Dinamico Finestra di dialogo per la selezione di diverse osservazioni@Rajat ,
In allegato è uno script modificato. Elementi da notare:
- Utilizza un ComboBox per l'elenco delle opzioni di categoria, impostato da un elenco interno allo script.
- Le assegnazioni vengono effettuate mediante selezioni dall'elenco di origine, la categoria corrente nel ComboBox e premendo il pulsante Assegna
- L'assegnazione è elencata come Nome gioco > Categoria
- È stato aggiunto un pulsante Aggiorna in modo che la tabella possa essere aggiornata in modo incrementale
- L'elenco di origine viene creato solo per i giochi a cui non è stato assegnato un tipo di gioco
- Le azioni per rimuovere e scrivere sulla tabella dovevano essere modificate. Ora gli elementi in lb1, l'assegnazione ListBox, hanno 2 informazioni in una singola stringa. La funzione Word(n,string,delimiter) viene utilizzata per estrarre le informazioni pertinenti.
Lo screenshot mostra che è stato effettuato un compito. Per questa vista, se l'utente preme Assegna, Badminton e Football saranno assegnati come Outdoor.
Questa interfaccia riduce il numero di variabili per le caselle di visualizzazione.La creazione di un'interfaccia utile richiede la comprensione dell'applicazione, delle esigenze e dell'utilizzo, la conoscenza di alcune nozioni di base o la ricerca di codice di esempio vicino a ciò che si desidera e la comprensione di ciò. Si noti che ci sono molte alternative a questo script.Buona fortuna!

JSL per il layout della finestra di dialogo. La sceneggiatura completa è allegata.
//--Dialog
usr = New Window("Using List Boxes", <<MODAL></MODAL>Re: Dinamica Finestra di dialogo per la selezione di diverse osservazioni@Rajat ,
Non hai specificato quale versione di JMP stai utilizzando.Se JMP 14, dal menu principale di JMP, selezionare Guida > Libri > Guida agli script di JMP . Questa è la versione PDF di un libro rilegato. Capitolo 11, a partire da pagina 517, inizia la sezione "Costruire finestre personalizzate".Questa è un'ottima fonte per l'apprendimento.
Anche Guida > Indice script > Sul pulsante grigio in alto, premere e selezionare Scatole da esposizione .Dal lato sinistro, seleziona un costruttore di disply box e sulla destra vedi la sintassi, quindi ci sono 1 o più semplici script di esempio che puoi eseguire, oppure copia e incolla e crea il tuo script, per imparare come funziona ogni costruttore.ti consiglio di cercare: ButtonBox , ListBoxBox che sono costruttori. PanelBox , LineUpBox , Casella di riepilogo (HListBox, VListBox) sono contenitori utilizzati per organizzare il layout della finestra di dialogo.
Per imparare davvero a comporre script, devi davvero conoscere gli strumenti e questo viaggio di apprendimento può richiedere del tempo.Tuttavia, molti scripter imparano prendendo script esistenti, leggendo, eseguendo, modificando per soddisfare le loro esigenze,
Dato che hai detto che ciò richiederebbe molte variabili, presumo che tu abbia bisogno di più di 3 categorie (Indoor, Outdoor, Nothing). Come ho affermato nel mio ultimo post, ci sono molti modi per farlo e ho usato il codice copia incolla.Se hai molte categorie, modificherei il mio script con l'esempio fornito da @pmroz . Avrei usato un ComboBox per selezionare da un elenco di categorie e solo una casella di pulsanti (Assegna) e solo una casella di assegnazione.Se ho tempo, modificherò il mio script e lo allegherò.
JMP nello scripting JMP, 2 E JSL Companion, Applicazioni del linguaggio di scripting JMP, 2a edizione ci sono altri due libri che potresti trovare utili per imparare JSL.
Re: Dinamico Finestra di dialogo per la selezione di diverse osservazioniGrazie @gzmorgan0
Cerco solo questa soluzione.
Sto cercando di capire il codice. Sembra che dobbiamo creare così tante variabili. Potete per favore suggerirmi qualche buona serie di video tutorial (preferibilmente) o qualsiasi libro a cui posso fare riferimento per imparare a creare finestre di dialogo interattive usando jsl. Sono proprio all'inizio della creazione di queste finestre di dialogo.
Grazie 
Re: Dinamico Finestra di dialogo per la selezione di diverse osservazioni@Rajat ,
La maggior parte del linguaggio di scripting di JMP, JSL, oggetti e funzioni per la creazione di finestre di dialogo personalizzate si rivolge alle colonne della tabella. Considera che le finestre di dialogo integrate di JMP richiedono colonne. Esistono oggetti che possono essere utilizzati per la selezione personalizzata, ma questi oggetti "valori" in genere richiedono più programmazione.Ad esempio, un oggetto ColListBox ha un'interfaccia drag and drop incorporata: un nome di colonna può essere trascinato su un altro ColListBox ei nomi di colonna saranno univoci.
JSL fornisce oggetti ListBox(), tuttavia, ora è compito degli scripter garantire l'unicità. Ad esempio, a seconda di come si codifica l'attività, è necessario fare in modo che Calcio abbia una sola classificazione e che il nome venga utilizzato una sola volta.
Un metodo consiste nel non utilizzare una finestra di dialogo, ma creare un riepilogo della tabella dei giochi unici e del tipo di gioco, fare in modo che l'utente aggiorni questa tabella abbreviata e quindi aggiornare la tabella di origine. Questo metodo è simile alle vecchie interfacce di aggiornamento del database.
Ho allegato uno script molto semplice e poco elegante (codice di forza bruta ripetuto) per completare l'attività descritta.L'ho mantenuto semplice poiché non hai letto il libro.L'interfaccia dello script include un pulsante di rimozione, nel caso in cui un gioco sia stato accidentalmente selezionato per un tipo errato.Invece di creare una funzione di unione, in modo che l'elenco dei giochi non abbia duplicati e funzioni per garantire che un gioco non sia classificato sia come indoor che outdoor, ho creato il codice per rimuovere il gioco dall'elenco di origine una volta selezionata una categoria.
Dovresti leggere l'Array associativo, un elenco con chiave, ListBox, ButtonBox e Set Function().
Di seguito è riportata una schermata della finestra di dialogo e la parte di dialogo dello script. La sceneggiatura completa è allegata.Nota che questo potrebbe essere fatto con un DataFilterBox, ma ListBox() è più facile da usare. A proposito, questo è stato testato su JMP13 e 14.

//--Dialog
usr = New Window("Using List Boxes", <<MODAL></MODAL>Re: Dinamico Finestra di dialogo per la selezione di diverse osservazioniCIAO @pmroz
Grazie per la risposta.
Nel mio set di dati effettivo ho 1000 giochi con 25 giochi unici e ho anche solo tre categorie 1.Indoor 2.Outdoor 3.Not Applicable. Con questo approccio devo selezionare il tipo di gioco per ogni 1000 giochi. Ho provato anche con un gioco unico ma non ha funzionato.
Possiamo avere una finestra che mostri solo i valori univoci dei giochi? Inoltre, dovrebbe consentire la selezione multipla del gioco e quindi selezionare il tipo di gioco per tutte le selezioni multiple di giochi perché la selezione del tipo di gioco per ogni valore univoco del gioco è noiosa se il numero di giochi unici aumenta.Re: Dinamico Finestra di dialogo per la selezione di diverse osservazioniEcco una soluzione che usa una table box con una col box.Regola per i tuoi tipi di gioco.
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;
),
)
)
);