Le applicazioni con parametri funzionano bene quando il numero e i tipi di colonne non cambiano. L'utilizzo di App Builder con molte delle piattaforme JMP richiede che vi sia una corrispondenza uno a uno tra il numero e i tipi di colonne utilizzate inizialmente per creare il report e le colonne utilizzate per l'analisi futura. In molti casi, questo è troppo restrittivo.
Per aggirare questo problema, è possibile generalizzare le applicazioni in modo che sia possibile utilizzare qualsiasi numero o tipo di colonne, ove applicabile. Lo svantaggio più grande è che la finestra di dialogo integrata per l'input dell'utente non è più disponibile. Fortunatamente, App Builder semplifica la creazione e l'utilizzo di una finestra di dialogo per avviare una finestra di report.
Ingredienti:
- Generatore di applicazioni
- Gestione delle espressioni
Tabelle di dati di esempio – Automobili 1993, Città
Difficoltà – Difficile
Durata del video – 8:04
Passi
- Aprire l'applicazione creata nella ricetta Creazione di un'applicazione parametrizzata . Si aprirà la tabella dei dati di esempio di Cars 1993 perché è stata utilizzata per creare la ricetta.
- Poiché non utilizzeremo un approccio parametrizzato, dovremo creare il nostro dialogo per l'input dell'utente. Inizia aggiungendo un nuovo modulo .
- Nel pannello Proprietà rinominare Module in Dialog .
- Modificare il tipo di rapporto in Dialogo . Ciò sopprime il menu nella parte superiore della finestra di dialogo.
- Sotto la struttura Input nel pannello Sorgenti trascina un selettore di colonne filtro nell'area di lavoro. Cambia il nome della variabile in clbAll .
- Aggiungi una casella di allineamento .
- Trascina due Col List Boxes e due Button Boxes nella Lineup e disponili due a due con ciascuna riga ottenendo un pulsante seguito da una Col List Box . Il contorno blu all'interno della scaletta mostra dove verrà posizionato l'oggetto. Puoi anche inserire un oggetto in un'area di rilascio, se esiste. Affinché le caselle Selettore colonne filtro ed Elenco colonne siano disponibili, è necessario che una tabella dati sia aperta nell'applicazione corrente.

- Modificare la proprietà Nome variabile del primo pulsante in btnY e il Titolo in Aggiungi Y .
- Modificare l'altro pulsante Nome e la proprietà Titolo rispettivamente in btnX e Aggiungi X.
- Impostare il Nome della variabile per la prima casella di riepilogo su clbY .
- Deseleziona tutti gli elementi tranne Continuo per Tipo di modellazione in modo che sia possibile aggiungere solo colonne continue.
- Modifica gli elementi minimi in 1 . Il suggerimento all'interno della casella cambia da facoltativo a obbligatorio .
- Imposta Numero massimo di articoli su 1 , limitando il numero di articoli che possono essere inseriti nella scatola.
- Infine, modifica N Lines in 2 . Questo cambierà l'altezza della scatola.
- Imposta il nome della variabile del secondo elenco di colonne su clbX e modifica N Lines su 8 .
- Aggiungi una casella di riepilogo V attorno alla formazione .
- Trascina una nuova casella pulsante all'interno dell'elenco V in modo che appaia in basso. Cambia il nome del nuovo pulsante in btnRemove e il titolo in Remove Selected .
- Aggiungi una casella centrale H attorno al pulsante.
- Selezionare il selettore Col filtro e la casella di riepilogo V che circonda gli altri elementi. Fare clic con il tasto destro e aggiungere una casella di riepilogo H. Fare clic con il pulsante destro del mouse sulla casella più esterna e selezionare Sposta nell'angolo .
- Aggiungi due pulsanti con titoli Esegui e Annulla rinominando le loro variabili rispettivamente btnRun e btnCancel .
- Posizionateli in una casella di riepilogo H , quindi in una casella centrale H.
- Selezionare la casella centrale H e la casella di riepilogo H contenenti gli altri oggetti e aggiungerli a una casella di riepilogo V.

Ora che abbiamo creato la finestra di dialogo, aggiungiamo funzionalità ai pulsanti.
- Seleziona il pulsante Annulla . Scorri fino alla fine del pannello Proprietà . L'ultima proprietà, Press , è associata allo script del pulsante. È possibile aggiungere uno script direttamente nella casella di immissione a destra oppure, se è necessario più spazio, facendo clic sul pulsante con tre punti si apre una finestra con più spazio. Questo è uno dei due posti in cui è possibile individuare gli script degli oggetti.
- Use the following code for the button:
(thisModuleInstance << Get Box) << Close Window;
Il riferimento allo spazio dei nomi thisModuleInstance è necessario per far funzionare il pulsante Annulla . Ogni modulo crea il proprio riferimento allo spazio dei nomi con lo stesso nome. Poiché il loro ambito non si estende al di fuori del modulo a cui sono associati, possono avere tutti lo stesso nome. È importante riconoscerlo quando si lavora con più moduli. Il messaggio Get Box viene utilizzato per ottenere un riferimento alla finestra di dialogo e Close Window per chiuderla.
- Seleziona il pulsante Aggiungi Y. Fare clic con il tasto destro e selezionare Script > Premi in basso. Questo crea un nome predefinito per lo script, lo aggiunge alla proprietà Press del pulsante Esegui e aggiunge una shell di script nella scheda Script , il secondo posto in cui è possibile individuare uno script. Il nome dello script nel pannello Proprietà deve essere uguale al nome dello script nella scheda Script affinché funzioni correttamente.
- Ripeti l'operazione per i pulsanti Aggiungi X e Rimuovi selezionati .
- Vai alla scheda Script . Elimina i commenti e il codice predefiniti che sono stati aggiunti agli script. L'argomento thisBox è un riferimento all'oggetto a cui è associato lo script. Tutte le proprietà dello script di App Builder utilizzano thisBox come primo argomento. È facoltativo e può essere rimosso se non viene utilizzato e non sono necessari altri argomenti.
- For the Add Y button script, add the following line:
clbY << Append(clbAll << Get Selected)
Ciò farà sì che ciò che è selezionato nel Selettore colonne filtro venga aggiunto alla casella di riepilogo Y.
- Aggiungi lo stesso script per il pulsante Aggiungi X sostituendo clbY con clbX .
- Use the following two lines for the Remove Selected button:
clbY << Remove Selected;
clbX << Remove Selected;
- Add a script for the Run button. Use the following code:
If(N Items(clbY << Get Items) > 0 & N Items(clbX << Get Items) > 0,
(thisModuleInstance << Get Box) << Close Window;
thisApplication:Report << Create Instance(clbY << Get Items,clbX << Get Items);
)
L'istruzione If controlla che sia presente almeno un elemento in entrambe le caselle di riepilogo colonne X e Y. Se questa condizione è soddisfatta, la riga 2 chiude la finestra di dialogo e la riga 3 avvia il modulo di report. thisApplication è lo spazio dei nomi utilizzato dall'applicazione che ha come ambito tutti gli oggetti e le variabili creati al suo interno. In questo caso viene utilizzato per fare riferimento al modulo di report ed è facoltativo. Crea istanza è il messaggio utilizzato per avviare un modulo. I suoi argomenti vengono passati alla funzione OnModuleLoad del modulo avviato. Passeremo il contenuto della List Box in cui l'utente seleziona le colonne di analisi.
- Seleziona il Modulo e rinominalo in Report . Deseleziona Avvio automatico in basso a destra per impedirne l'avvio all'avvio dell'applicazione.
- Elimina i tre report attualmente presenti nel report. Faremo in modo che JSL li costruisca in fase di esecuzione, dopo che l'utente ha selezionato le colonne di analisi.
- Rinominare le caselle della pagina scheda tpbDistribution , tpbFitYbyX e tpbScatter .
- To finish building the application, navigate to the Report section of the Scripts tab. It can be found by selecting the Scripts tab and choosing Report using the combo box at the top. We used Create Instance in the Dialog module script to launch the report and pass it the analysis columns. A module receives any arguments in its OnModuleLoad function. This happens before any of the report visuals are rendered. The following code will receive the passed variables and assign them variables local to the module (i.e., in the thisModuleInstance namespace for report).
OnModuleLoad({yCols,xCols},
allCols = Insert(yCols,xCols);
yVars = yCols;
xVars = xCols;
);
La variabile allCols combina le variabili X e Y per la piattaforma Scatterplot.
- The Aggiungere function will be used to add the platforms to the appropriate Tab Page Boxes.
tpbDistribution << Append();
tpbFitYbyX << Append( );
tpbScatter << Append()
- Working from the saved scripts from the Parameterized Application recipe, copy and paste the Scatterplot Matrix code into the Aggiungere function for tpbScatter. Delete the list of hard coded column names and replace them with Valutazione(tutte le colonne).
tpbScatter << Append(
Scatterplot Matrix(
Y( Eval(allCols) ),
)
)
- We will use an alternative form for the Distribuzione platform:
tpbDistribution << Append(
Distribution(
Y(Eval(allCols))
)
);
Il vantaggio di questo approccio è che non è necessario specificare i tipi di modellazione per le colonne di input, rendendo il codice molto più semplice.
- We will also use an alternative for Adatta Y per X
tpbFitYbyX << Append(
Fit Y by X(
Y( Eval(yVars)),
X( Eval(xVars) )
) << Fit Line << ANOVA;
);
Oltre a non dover modificare la chiamata della piattaforma per i diversi tipi di modellazione, è possibile utilizzare entrambi i messaggi Fit Line e ANOVA rendendo il codice più compatto.
È possibile testare l'applicazione con la tabella dati di esempio Città . Anche se sei limitato a una singola colonna di risposta, il numero e i tipi di modellazione per le colonne X non sono limitati.