HTML-ähnliche Referenzen innerhalb eines JSL-Skript-Anzeigefensters<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo, ich habe ein Skript, das eine Analyse eines bestimmten Datensatzes durchführt und Zusammenfassungen auf den ersten Seiten eines Berichts ausgibt (verwendet den Befehl „new window()“ mit verschiedenen Anzeigeobjekten), gefolgt von N Seiten mit Skriptanalysen für N ausgewählte Parameter. All dies befindet sich im selben Bericht, und ich nutze die Seitenumbruchfunktion, um die einzelnen Parameter zu trennen. N kann eine beliebige Zahl sein ... nur ein paar oder etwa tausend Parameter/Seiten.Ist es möglich, Hyperlinks zu haben, die von der Zusammenfassung auf der ersten Seite oder so weiterleiten und auf Ziele in diesem Bericht verweisen? Es könnte entweder auf ein codiertes Ziel oder eine Seitenzahl verweisen, die ich zu verfolgen versuchen könnte.Eine codierte Referenz wird bevorzugt ... bei 1000 Parametern würde sich die Zusammenfassung über mehrere Seiten erstrecken, und ich bin mir tatsächlich nicht sicher, ob ich die Seitenzahl im Auge behalten kann.
Ich habe Links gesehen (z. B. Hilfemenü -> Beispieldaten -> alle Kategorien haben sie), aber sie würden auf eine Datei verweisen, oder ich nehme an, dass eine andere Protokolladresse auch funktionieren würde – open() vs. web()-Befehle.Aber ist es möglich, es so zu codieren, dass ich einen Link und einen Verweis auf eine Stelle im selben Berichtsfenster erstellen kann?
Beachten Sie, dass dies in der nativen „new window()“-Ausgabe und nicht in einem HTML5-Export erfolgen muss, da ich in großem Umfang dynamisch gesteuerte/skalierte Achsenfelder und spontane Berechnungen verwende.
Danke,
Mike
Betreff: HTML-ähnliche Referenzen in einem JSL-Skript-AnzeigefensterIch habe heute den JMP-Skriptindex durchstöbert und dabei die Anzeigeboxfunktion „Bildlauffeld ()“ gesehen, und da kam mir der Gedanke, dass ich das als Pseudo-Hyperlink verwenden kann. Ich brauchte einfach etwas „Anklickbares“, das beim Anklicken eine Aktion ausführt.Ich hatte oben in meinem Bericht bereits eine zusammenfassende Tabellenbox(), also musste ich nur die Zeilen der Tabellenbox auswählbar machen und die Kombination aus << set selectable rows() und << set row change function verwenden () macht genau das. Wenn sich die Auswahl ändert, wird die Funktion ausgeführt, der Code bestimmt, welche Zeile ausgewählt wird, und solange die Plotreihenfolge der Tabellenreihenfolge entspricht, scrollen wir einfach zur Referenz des i-ten Kontextfelds (oder eines anderen Anzeigefelds). Ich habe versucht, zu „db[i]“ zu scrollen, wobei db[i] = distribution(param[i],.......) ist, aber das hat nicht funktioniert, die richtigen Anzeigefelder jedoch schon.
Ein Teil dieses Codes stammt direkt aus dem Skriptindex, insbesondere die << set row change function(). Die Variable „this“ hat mich verwirrt, aber alles, was es gibt, ist das Tabellenfeld selbst, das anscheinend an die Funktion übergeben wird, wenn sich die Zeilenauswahl ändert. Wenn Sie beispielsweise versuchen, „this“ an vlb anzuhängen, wird einfach eine weitere Tabelle box() am Ende von vlb eingefügt.
Eine Sache, die nicht gut gehandhabt wird, ist, wenn mehrere Zeilen mit Strg+Klick (cmd-Klick auf Mac) ausgewählt werden, aber ich denke nicht, dass das eine große Sache ist. Es könnten auch andere Methoden verwendet werden ... etwa eine Schaltflächenbox oder << on change() könnte verwendet werden, um zum Ziel zu scrollen. Zum Beispiel ein Listenfeld.
Das wurde vielleicht schon gepostet, aber ich dachte, es lohnt sich, es zu teilen.Ich habe nur 7 Jahre gebraucht, um es herauszufinden. Ich hoffe, Sie finden es nützlich.
Names Default To Here( 1 );
//dummy data table
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
// get col list
colList = {};
for( i = 1, i<=20, i++,
colList[i] = as column(dt, 4 + i) << get name();
);
// new window, table box with selectable rows
nw = New Window( "Example",
vlb = vlistbox(
Outline Box( "Table",
tb = Table Box(
String Col Box( "names", colList ),
<<SET selectable="" rows=""> 0,
nw << scroll window(cb[itemNum[1]]);
);
)
);
</SET>
Betreff: HTML-ähnliche Referenzen in einem JSL-Skript-AnzeigefensterDanke Wendy. Ich werde es mit einigen anderen Benutzern besprechen und sehen, ob das in Ordnung ist. Bei Hunderten von Parametern wird es immer noch ein bisschen Scrollen geben, aber das sollte nicht so schlimm sein.
-Mike
Betreff: HTML-ähnliche Referenzen in einem JSL-Skript-AnzeigefensterHallo Jeff,
Ich habe einige Zeit damit verbracht, den Säulenumschalter auszuprobieren. Jemand beim Discovery Summit hatte es erwähnt (kurz nach Ihrer Zeit als Moderator der Spielshow). ), aber ich wusste nicht, dass es zu jeder Plattform hinzugefügt werden kann.Die Wiedergabe-/Geschwindigkeitsvariationsfunktion gefällt mir sehr gut. Allerdings verfügt mein Skript über einige andere eingebettete Funktionen, von denen eine es dem Benutzer ermöglicht, die Fenstergröße von Verteilungen mithilfe von Optionsfeldern zu skalieren (Anwendung ist die elektrische Prüfung von Halbleitern in der Produktion). Ich habe eine Schaltfläche zum Skalieren aller Parameterachsen auf bestehende Grenzwerte (und andere Fenstergrößen wie alle Daten, Low-Side-Fallout, High-Side-Fallout, Median +/- N * IQR usw.). Es ist wichtig, diese Min.-/Max.-Werte so beizubehalten, wie sie vom Benutzer festgelegt werden. Es sieht so aus, als würde der Spaltenumschalter dies zurücksetzen.Zu den weiteren Funktionen gehört die Möglichkeit, Anova und GR&R gleichzeitig zu gruppieren.
Aber für diese spezielle Funktion, die ich verwende, stelle ich alle Min/Max-Achsen auf die entsprechenden Spezifikationsgrenzen ein. Dies bedeutet, dass der einzige Teil der angezeigten Verteilung von der Mindestgrenze bis zur Höchstgrenze reicht (Min/Max-Spezifikation in unseren Tests); Dies wird als Ausgangspunkt verwendet, sodass alle Parameter mit Min./Max. des Fensters = Min./Max. Spezifikationsgrenze beginnen.Jeder einzelne Parameter verfügt ebenfalls über diese Achsenskalierungssteuerelemente, oder ein Benutzer kann die Achse mit der Maus skalieren.Nachdem der Benutzer die gewünschten Parameter skaliert hat, gibt es unten eine Schaltfläche zum Erstellen einer Grenzwerttabelle. Dadurch werden alle Min-/Max-Achsenwerte erfasst und in einer Tabelle ausgegeben, die dann in das Testprogramm importiert werden kann. Es erweist sich als effiziente Möglichkeit, viele Grenzwerte anzupassen (insbesondere mit einer GUI-Option, um nur die Top-N-Ertragssünder darzustellen).Wir haben andere Skripte, um Grenzwerte über den gewünschten CPK oder andere Berechnungen festzulegen, aber manchmal gibt es einfach zu viele Distributionen, die nicht ideal sind, und das funktioniert ganz gut.
Hier ist ein Beispiel für die Ausgabe. In diesem Fall wurde nur ein Parameter dargestellt und ich habe ihn nicht gruppiert.Die Optionsfelder würden die Achse skalieren und das Schaltflächenfeld unten würde alle Min/Max-Werte abrufen und die Tabelle generieren.
Da dieses Skript für verschiedene Zwecke verwendet wird, zögere ich, es komplett neu zu schreiben.Aber ich werde sehen, ob ich diesen Spaltenumschalter in naher Zukunft auf die eine oder andere Weise nutzen kann.

Danke,
Mike
Betreff: HTML-ähnliche Referenzen in einem JSL-Skript-AnzeigefensterMike,
Das frühere TabBox()-Beispiel sollte wie gewünscht im PDF-Format gespeichert werden, bietet aber nicht den langen Bericht, den Sie suchen.Hier ist also eine weitere Option für Sie.Einzelheiten finden Sie in den eingebetteten Kommentaren.
Wendy
dt = Open( "$SAMPLE_DATA\Fitness.jmp" );
colList = dt << Get Column Names( Continuous, String );
/* New Window with a Summary OutlineBox and a separate Analyses OutlineBox */
nw = New Window( "Example 2", ob = Outline Box( "Summary" ), Outline Box( "Analyses", vl = V List Box() ) );
/* Initialize a list for storing references to the Distributions */
dist = {};
/* Loop through each column
- append each Distribution to the Analyses Outline Box
- append a button link to expand the specified Distribution OutlineBox */
For( i = 1, i <= N Items( colList ), i++,
vl << Append( dist = Distribution( Continuous Distribution( Column( Column( colList ) ), Horizontal Layout( 1 ), Vertical( 0 ) ) ) );
var = colList || " Distribution";
Report( dist )[Outline Box( 1 )] << Set Title( var );
Eval(
Eval Expr(
ob << Append(
bb = Button Box( var,
Current Window()[Expr( var )] << Close All Like This;
Current Window()[Expr( var )] << Set Open( 1 );
)
)
)
);
bb << UnderlineStyle( 1 );
);
/* Add a button to open all the OutlineBoxes and save the output as PDF */
ob << Append(
Button Box( "Save All to PDF",
Current Window()["Analyses"] << Open All Below;
Current Window() << Set Page Setup( Scale(.75));
path = Pick File( "Select PDF File", "E:\Trash", {"PDF|pdf"}, 1, 1, "Example 2.pdf" );
Current Window() << SavePDF( path );
Open( path );
)
);
Betreff: HTML-ähnliche Referenzen in einem JSL-Skript-AnzeigefensterIch denke, ich würde es verwenden Spaltenumschalter in einem Fall wie diesem.
Dadurch kann Ihr Benutzer die gewünschte Analyse auswählen, ohne dass Sie zusätzliche Skripte zum Aktualisieren eines anderen Fensters erstellen müssen.
Wenn Sie die PDF-Option wünschen, können Sie eine Schaltfläche in das Fenster einfügen, die alle Parameter in einem neuen, unsichtbaren Fenster ausführt und als PDF speichert.
-Jeff
Betreff: HTML-ähnliche Referenzen in einem JSL-Skript-AnzeigefensterHallo Wendy,
Ich habe darüber nachgedacht, dieses Problem zu umgehen, aber mir gefällt die Idee, den gesamten Parametersatz zur Berichtsarchivierung in einem sehr langen Bericht aufzubewahren. Ich kann es als PDF ausdrucken, damit jemand (oder höchstwahrscheinlich niemand) es später ansehen kann. Außerdem ist es bei über 1000 Parametern manchmal hilfreich, schnell weiterblättern zu können und einfach visuell nach einer Verteilung zu suchen, die nicht stimmt (schief, bimodal, Ausreißer).
Meine Idee war, das gleiche Fenster zu erstellen, das ich jetzt habe, aber zusätzlich ein separates Fenster zu öffnen, wenn zum ersten Mal auf einen Link (Parametername) in der Zusammenfassung geklickt wird. In diesem Fenster gäbe es eine Reihe von Analysen und Ausgaben, die im Wesentlichen mit denen in meinem Hauptfenster identisch sind, mit der Ausnahme, dass es im Nebenfenster nur ein Parameter wäre, während es im Hauptfenster der vollständige Satz wäre viele Parameter. Wenn Sie im Hauptfenster auf nachfolgende Links klicken, wird der vorherige Parameter aus dem sekundären Fenster gelöscht und ein neuer erstellt.Es gibt mehrere Optionsfelder und andere Steuerelemente sowie die Achsenskalierung, daher müsste ich diese Informationen an den entsprechenden Parameter des Hauptfensters zurückgeben, aber es würde wahrscheinlich funktionieren.Die einzige Ausnahme wäre meiner Meinung nach die manuelle Skalierung der Achse mit der Maus.Ich glaube nicht, dass es eine Ereignisfunktion gibt, die damit verbunden ist (z. B. OnAxisChange()), aber ich nehme an, dass eine Schaltfläche „Fertig“ implementiert werden könnte, um die neuen Min/Max-Werte zu erfassen und diese zurück in die Parameter des Hauptfensters zu übertragen Achse.
Danke,
Mike
Betreff: HTML-ähnliche Referenzen in einem JSL-Skript-AnzeigefensterHallo Mike.
Haben Sie darüber nachgedacht, TabBox() zu verwenden?Es gibt einen Tab-Stil namens „Combo“, der ein Dropdown-Menü für jeden Tab-Namen erstellt, sodass der Benutzer diesen Tab auswählen und direkt zu ihm weitergeleitet werden kann.Hier ist ein einfaches Beispiel:
/* Open sample data and obtain a list of column names */
dt = Open( "$SAMPLE_DATA\Fitness.jmp" );
colList = dt << Get Column Names( Continuous, String );
/* Store the number of desired tabs in a variable */
nTabs = N Items( colList );
/* Create a New Window containing an empty TabBox */
New Window( "Example", tb = Tab Box() );
/* Use a For loop to add the desired number of tabs to the TabBox */
For( i = 1, i <= nTabs, i++,
tb << Add( colList || " Distribution",
V List Box(
Distribution( Continuous Distribution( Column( Column( colList ) ), Horizontal Layout( 1 ), Vertical( 0 ) ) )
)
)
);
tb << Set Selected( 1 );
tb << Set Style( "combo" );