Parametrisierte Anwendungen funktionieren gut, wenn sich Anzahl und Typ der Spalten nicht ändern. Die Verwendung von App Builder mit vielen JMP-Plattformen erfordert eine Eins-zu-eins-Entsprechung zwischen der Anzahl und Art der Spalten, die zum ersten Erstellen des Berichts verwendet werden, und den Spalten, die für zukünftige Analysen verwendet werden. In vielen Fällen ist dies zu restriktiv.
Um dieses Problem zu umgehen, ist es möglich, Anwendungen so zu verallgemeinern, dass gegebenenfalls eine beliebige Anzahl oder Art von Spalten verwendet werden kann. Der größte Nachteil besteht darin, dass das integrierte Dialogfeld für Benutzereingaben nicht mehr verfügbar ist. Glücklicherweise erleichtert App Builder das Erstellen und Verwenden eines Dialogfelds zum Starten eines Berichtsfensters.
Zutaten:
- Anwendungsersteller
- Umgang mit Ausdrücken
Beispieldatentabellen – Autos 1993, Städte
Schwierigkeitsgrad – Schwer
Videolänge – 8:04
Schritte
- Öffnen Sie die im Rezept „Erstellen einer parametrisierten Anwendung“ erstellte Anwendung. Die Beispieldatentabelle „Cars 1993“ wird damit geöffnet, da sie zum Erstellen des Rezepts verwendet wurde.
- Da wir keinen parametrisierten Ansatz verwenden, müssen wir unseren eigenen Dialog für Benutzereingaben erstellen. Beginnen Sie mit dem Hinzufügen eines neuen Moduls .
- Benennen Sie im Eigenschaftenfenster „Module“ in „Dialog“ um .
- Ändern Sie den Berichtstyp in Dialog . Dadurch wird das Menü oben im Dialogfenster unterdrückt.
- Ziehen Sie unter der Eingabegliederung im Bedienfeld „Quellen“ eine Filterspaltenauswahl in den Arbeitsbereich. Ändern Sie den Variablennamen in clbAll .
- Fügen Sie eine Line-Up-Box hinzu.
- Ziehen Sie zwei Col-List-Boxen und zwei Button-Boxen in die Aufstellung und ordnen Sie sie paarweise an, wobei jede Zeile eine Schaltfläche gefolgt von einer Col-List-Box erhält. Der blaue Umriss innerhalb der Aufstellung zeigt, wo sich das Objekt befinden wird. Sie können ein Objekt auch in einen Ablagebereich legen, sofern dieser vorhanden ist. In der aktuellen Anwendung muss eine Datentabelle geöffnet sein, damit die Felder „Filter Col Selector“ und „Col List“ verfügbar sind.

- Ändern Sie die Eigenschaft Variablenname der ersten Schaltfläche in btnY und den Titel in Add Y .
- Ändern Sie die Eigenschaft „Name“ und „Titel“ der anderen Schaltfläche in „btnX “ bzw. „Add X“ .
- Legen Sie den Variablennamen für das erste Listenfeld auf clbY fest.
- Deaktivieren Sie alle Elemente außer „Kontinuierlich“ für den Modellierungstyp, sodass nur kontinuierliche Spalten hinzugefügt werden können.
- Ändern Sie „Min Items“ auf 1 . Der Hinweis im Feld ändert sich von optional zu erforderlich .
- Legen Sie Max Items auf 1 fest, um die Anzahl der Artikel zu begrenzen, die in die Box gelegt werden können.
- Ändern Sie abschließend N Lines in 2 . Dadurch ändert sich die Höhe der Box.
- Setzen Sie den Variablennamen der zweiten Spaltenliste auf clbX und ändern Sie N Lines auf 8 .
- Fügen Sie ein V-Listenfeld um die Aufstellung herum hinzu.
- Ziehen Sie ein neues Schaltflächenfeld in die V-Liste , sodass es unten angezeigt wird. Ändern Sie den Namen der neuen Schaltfläche in btnRemove und den Titel in Remove Selected .
- Fügen Sie ein H-Mittelfeld um die Schaltfläche hinzu.
- Wählen Sie die Filter-Spaltenauswahl und das V-Listenfeld aus, die die anderen Elemente umgeben. Klicken Sie mit der rechten Maustaste und fügen Sie ein H-Listenfeld hinzu. Klicken Sie mit der rechten Maustaste auf das äußerste Feld und wählen Sie „In Ecke verschieben“ aus.
- Fügen Sie zwei Schaltflächen mit den Titeln „Run “ und „Cancel“ hinzu und benennen Sie ihre Variablen in „btnRun “ bzw. „btnCancel“ um.
- Positionieren Sie sie in einem H-List-Feld und dann in einem H-Center-Feld .
- Wählen Sie die H-Center-Box und die H-Listbox mit den anderen Objekten aus und fügen Sie sie einer V-Listbox hinzu.

Nachdem wir nun den Dialog erstellt haben, fügen wir den Schaltflächen Funktionen hinzu.
- Wählen Sie die Schaltfläche Abbrechen . Scrollen Sie im Eigenschaftenfenster nach unten. Die letzte Eigenschaft, Press , ist mit dem Schaltflächenskript verknüpft. Ein Skript kann direkt zum Eingabefeld auf der rechten Seite hinzugefügt werden. Wenn mehr Platz benötigt wird, öffnet sich durch Klicken auf die Schaltfläche mit den drei Punkten ein Fenster mit mehr Platz. Dies ist einer von zwei Orten, an denen sich Objektskripte befinden können.
- Use the following code for the button:
(thisModuleInstance << Get Box) << Close Window;
Die thisModuleInstance- Namespace-Referenz ist erforderlich, damit die Schaltfläche „Abbrechen“ funktioniert. Jedes Modul erstellt eine eigene Namespace-Referenz mit demselben Namen. Da ihr Gültigkeitsbereich nicht über das Modul hinausgeht, dem sie zugeordnet sind, können sie alle denselben Namen haben. Dies ist wichtig zu beachten, wenn Sie mit mehreren Modulen arbeiten. Die Get Box- Nachricht wird verwendet, um einen Verweis auf das Dialogfenster abzurufen, und die Close Window-Nachricht , um es zu schließen.
- Wählen Sie die Schaltfläche Y hinzufügen . Klicken Sie mit der rechten Maustaste und wählen Sie Skripte > Drücken Sie unten. Dadurch wird ein Standardname für das Skript erstellt, dieser der Eigenschaft „ Drücken “ der Schaltfläche „ Ausführen“ hinzugefügt und eine Skript-Shell auf der Registerkarte „Skripte“ hinzugefügt, dem zweiten Ort, an dem ein Skript gefunden werden kann. Der Skriptname im Eigenschaftenfenster muss mit dem Skriptnamen auf der Registerkarte „Skripte“ identisch sein, damit es ordnungsgemäß funktioniert.
- Wiederholen Sie dies für die Schaltflächen „X hinzufügen“ und „Auswahl entfernen“ .
- Gehen Sie zur Registerkarte Skripte . Löschen Sie die Standardkommentare und den Code, der den Skripten hinzugefügt wurde. Das Argument thisBox ist eine Referenz auf das Objekt, dem das Skript zugeordnet ist. Alle App Builder-Skripteigenschaften verwenden thisBox als erstes Argument. Es ist optional und kann entfernt werden, wenn es nicht verwendet wird und keine weiteren Argumente erforderlich sind.
- For the Add Y button script, add the following line:
clbY << Append(clbAll << Get Selected)
Dadurch wird die Auswahl im Filter-Spalten-Selektor zum Y-Listenfeld hinzugefügt.
- Fügen Sie dasselbe Skript für die Schaltfläche „X hinzufügen“ hinzu und ersetzen Sie clbY durch 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);
)
Die If- Anweisung prüft, ob in den Listenfeldern X- und Y-Spalte mindestens ein Element vorhanden ist. Wenn diese Bedingung erfüllt ist, schließt Zeile 2 das Dialogfenster und Zeile 3 startet das Berichtsmodul. thisApplication ist der von der Anwendung verwendete Namespace, der sich auf alle darin erstellten Objekte und Variablen bezieht. In diesem Fall dient es zur Referenzierung des Berichtsmoduls und ist optional. „Instanz erstellen“ ist die Nachricht, die zum Starten eines Moduls verwendet wird. Seine Argumente werden an die OnModuleLoad- Funktion des gestarteten Moduls übergeben. Wir übergeben den Inhalt der Listbox, in der der Benutzer die Analysespalten auswählt.
- Wählen Sie das Modul aus und benennen Sie es in Report um . Deaktivieren Sie „Automatisch starten“ unten rechts, um zu verhindern, dass es beim Start der Anwendung gestartet wird.
- Löschen Sie die drei Berichte, die derzeit im Bericht enthalten sind. Wir werden JSL verwenden, um sie zur Laufzeit zu erstellen, nachdem der Benutzer die Analysespalten ausgewählt hat.
- Benennen Sie die Registerkartenfelder in tpbDistribution , tpbFitYbyX und tpbScatter um.
- 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;
);
Die Variable allCols kombiniert die X- und Y-Variablen für die Scatterplot-Plattform.
- The Anhängen 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 Anhängen function for tpbScatter. Delete the list of hard coded column names and replace them with Eval(allCols).
tpbScatter << Append(
Scatterplot Matrix(
Y( Eval(allCols) ),
)
)
- We will use an alternative form for the Verteilung platform:
tpbDistribution << Append(
Distribution(
Y(Eval(allCols))
)
);
Der Vorteil dieses Ansatzes besteht darin, dass die Modellierungstypen für die Eingabespalten nicht angegeben werden müssen, wodurch der Code wesentlich einfacher wird.
- We will also use an alternative for Passen Sie Y an X an
tpbFitYbyX << Append(
Fit Y by X(
Y( Eval(yVars)),
X( Eval(xVars) )
) << Fit Line << ANOVA;
);
Abgesehen davon, dass der Plattformaufruf für die verschiedenen Modellierungstypen nicht geändert werden muss, können sowohl die Fit Line- als auch die ANOVA- Nachrichten verwendet werden, um den Code kompakter zu machen.
Sie können die Anwendung mit der Beispieldatentabelle „Städte“ testen. Während Sie auf eine einzige Antwortspalte beschränkt sind, sind die Anzahl und Modellierungstypen für die X-Spalten nicht eingeschränkt.