JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Hallo zusammen,
Ich bin daran interessiert zu erfahren, wie Sie (wenn möglich) das Red-Hot-Button-Menü zu Ihrer eigenen definierten Outline-Box hinzufügen können. Bei der Graph Builder-Plattform gibt es beispielsweise eine brandheiße Schaltfläche, die Dinge wie „Skript in Datentabelle speichern“ und andere Optionen ermöglicht.

Ich habe andere Skripte geschrieben, in denen ich diese Option gerne hätte. Die Outline-Box verfügt für einige Optionen über ein kleines graues Dreieck, bietet jedoch nicht die roten Hot-Button-Optionen. Zum Beispiel:

Ich habe den Scripting Index und den Scripting Guide durchsucht und kann keine Dokumentation dazu finden.
Weiß jemand, ob es möglich ist? Und wenn ja, wie?
Danke!,
DS
Automatisierung und SkripterstellungMassenanpassungErgebnisse teilen und kommunizierenWindowsBetreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Suchen Sie möglicherweise nach << Set Menu Script? Beispiel aus dem Skriptindex
Names Default To Here(1);
New Window("Example",
fontobj = ob = Outline Box("Outline Box",
V List Box(
ob2 = Outline Box("Outline Box 2",
H List Box(
Text Edit Box("Top Left"),
Text Edit Box("Top Right")
)
),
ob3 = Outline Box("Outline Box 3",
H List Box(
Text Edit Box("Bottom Left"),
Text Edit Box("Bottom Right")
)
)
)
)
);
ob << Set Menu Script(
{"A", Print("A"), "B", Print("B"), "B1", Print("B1"), "B2",
Print("B2"), "B3", Print("B3"), "C", Print("C")}
);
ob << Set Submenu(2, 3);

Es gibt auch etwas dazu in der JMP-Hilfe, aber es ist aufgrund der schrecklichen Suche auf der JMP-Hilfeseite sehr, sehr schwer zu finden ( https://www.jmp.com/support/help/en/17.2/#page/jmp/construct-display-boxes-for-new-windows.shtml#ww883930 )

Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Tutorial-Video:
Einführung in die JMP-Skriptsprache Kapitel 5.3 @ 10:30min
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Hallo @jthi Und @hogi ,
Vielen Dank für die Informationen, wo dieser Prozess beginnen soll, sie sind sehr hilfreich. Und es ist im Moment wirklich nur eine teilweise Lösung.
Ich konnte ein Menüskript hinzufügen – im Moment füge ich nur zwei Dinge hinzu: einen lokalen Datenfilter und das Speicherskript (3 Optionen): zur Datentabelle, zum Skriptfenster und zum Journal.
Im Moment funktioniert der lokale Datenfilter und das Speicherskript im Journal einwandfrei. Schwieriger fällt es mir, die Funktionen zum Speichern des Skripts in der Datentabelle und zum Speichern des Skripts im Skriptfenster zum Laufen zu bringen. Unten finden Sie den Codeabschnitt, in dem das Menüskript aktiviert und dann die Aktion für jeden ausgewählten Menüpunkt zugewiesen wird.
mob << Set Menu Script(
{"Local Data Filter", ts << Local Data Filter ; gb << Local Data Filter, "Save Script", "", "To Data Table", nwin <<
Save Script to Data Table( "Correlation Analysis of " || ycols[1] || " vs. " || xcols[1], <<PROMTP></PROMTP>Mein angepasstes Berichtsfenster sieht in etwa so aus:

Ich hätte gerne die Option, dass der Benutzer das Skript zum Speichern in der Datentabelle (oder im Skriptfenster) auswählen kann und grundsätzlich das Skript speichert, das zum Generieren dieses benutzerdefinierten Berichts verwendet wird, sodass diese Analyse in der Datentabelle gespeichert werden kann Jemand kann auf den grünen Skriptpfeil neben dem Skript klicken und die Analyse erneut ausführen, ohne das gesamte Add-In erneut ausführen zu müssen.
Aus der Lektüre der Informationen dazu im Skriptindex geht hervor, dass nur Objekte wie Plattformberichte (z. B. Graph Builder oder Time Series) einzeln in der Datentabelle gespeichert werden können, das gesamte Outline Box-Objekt, das mein Berichtsfenster darstellt, jedoch nicht. Diese Art von Sendebefehl (<<) wird nicht akzeptiert. Ich würde es vorziehen, nicht jedes Plattformobjekt einzeln zu speichern, sondern den gesamten Skriptcode, nachdem ich ihn für die Analyse der Datentabelle/des Skriptfensters verwendet habe.
Ich weiß nicht genau, warum, aber vielleicht liegt es daran, dass mein Code eine andere Struktur hat, weil ich mehrere Expr-Anweisungen verwende. Als grobe Vorstellung ist mein Code wie folgt aufgebaut:
Names Default To Here( 1 );
//any variable definitions
var1 = .;
var2 = .;//etc
//Expression to recall roles
RecallRoles = Expr(
//inside is the code to recall roles
);
//Expression to clear roles
ClearRoles = Expr(
//similar code to clear roles
);
//User interface window
ValueDlg = Expr(
nwin = New Window(
// opens a new window with the main outline box and subpanels
//and action buttons
mob = Outline Box(
//this is the main outline box that contains the subpanels and
//time series and graph builder platforms
//it also contains the action buttons that perform certain tasks
)
);
mob << Set Menu Script(
//this is where I'm trying to save the evaluated script to the data
//table so a usercan just cick it, and the script will execute with
//the variables already evaluated and not have to cast columns into
//roles, etc.
);
);
ValueDlg;//this calls the ValueDlg Expr and evaluates it.
Wenn einer von Ihnen Ideen oder Gedanken dazu hat, wie ich das machen könnte (ich hoffe, dass meine Erklärung Sinn macht), freue ich mich über jedes Feedback dazu.
Danke!,
DS
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?So fügen Sie einen Datenfilter hinzu und speichern das Skript des Berichts in der Datentabelle – wenn Sie an einem arbeiten Windows-PC , könnten Sie die Verwendung der Berichtssymbolleiste in Betracht ziehen:

Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Wenn Sie die Gliederungsbox nach dem Skript fragen, wird lediglich so etwas wie der Anzeigebaum zurückgegeben.
Das funktioniert also auch nicht.
Wenn Sie den Bericht erstellen, verfügen Sie über den gesamten Ausdruck, um den Bericht zu erstellen.
Wenn der Benutzer also auf „Skript speichern“ klickt, können Sie einfach diesen Ausdruck verwenden und ihn als Skript speichern.
[Änderungen, die der Benutzer danach vorgenommen hat, werden dann nicht gespeichert]
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
New Window( "test",
ob = Outline Box( "test",
V List Box( Text Box( "hello" ), gb = dt << Graph Builder( Variables( X( :height ), Y( :weight ), Overlay( :sex ) ) ) )
)
);
ob << get script(); // Display Tree
ob << get scriptable Object (); // Empty
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Das Speichern des Skripts, das dieses benutzerdefinierte Fenster erstellt, wird im Allgemeinen sehr schwierig sein, da Sie im Grunde genommen das gesamte Add-In in dieses Skript einbinden müssten, wobei die Benutzerauswahlen angewendet würden (und dann wäre es das Gleiche, als würde der Benutzer das Add-In im Grunde erneut ausführen). In). Ich hatte für so etwas zumindest ein paar verschiedene Lösungen (ich versuche nicht, das ganze Fenster zu speichern, da meine Add-Ins dafür normalerweise zu kompliziert sind):
- Speichern Sie eine Art Einstellungsvariable in der Datentabelle, die der Benutzer dann in Ihr Add-In laden kann, um sie „aufzufüllen“.
- Speichern Sie nicht das gesamte Skript, sondern eine Art „Dashboard“-Lösung mit nicht so vielen Funktionen
- Speichern Sie nur einige einfachere Teile als Tabellenskript(e)
- Und vielleicht noch ein paar mehr, an die ich mich im Moment nicht erinnere ...
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Ich denke, die beste Idee ist, den Bericht NICHT manuell zu erstellen, sondern über Dashboard-Builder .
Im generierten Dashboard gibt es ein rotes Dreiecksmenü mit einer Option zum Speichern des (Dashboard-)Skripts
... und seit Jmp17 gibt es sogar die Möglichkeit, eine vereinfachte Version zu speichern, die wie ein manuell generiertes Skript aussieht:

Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Ergänzung zu den Vorschlägen von @jthi , könnten Sie eine Funktion erstellen, die Sie in Ihrem Add-In aufrufen, und dann ist Ihr Save Script nur der Funktionsaufruf. Es erfordert einiges an Verwaltung, um sicherzustellen, dass die Funktion gut gestaltet ist und die von Ihnen benötigten Optionen verarbeitet. Wenn Sie jedoch ein Dialogfeld zum Starten Ihres Add-Ins erstellen, haben Sie wahrscheinlich bereits viele Argumente definiert.
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Hallo @jthi , @hogi , Und @Jeff_Perkinson ,
Ich schätze das Feedback, die Gedanken und die Diskussion. Nun, es scheint schwieriger zu sein, als ich dachte. Das heißt nicht, dass es nicht machbar ist, aber es wird nicht so „einfach“ sein wie das Hinzufügen des Menüskripts zur Gliederungsbox. Vielleicht muss ich einige der Ideen hier noch einmal überdenken.
@hogi , ich habe sowohl das Skript zum Speichern im Fenster als auch das Skript zum Speichern aller Objekte in der Datentabelle ausprobiert, aber keines davon hat wie beabsichtigt funktioniert.
Wenn ich die Lösung finde, nach der ich suche, werde ich diesen Beitrag auf jeden Fall mit der Art und Weise aktualisieren, wie ich sie gelöst habe, falls andere darauf stoßen und Interesse haben.
Danke an alle!,
DS
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Application/Dashboard Builder ist unglaublich nützlich – es lohnt sich, es auszuprobieren 
Erstellen von Dashboards und Anwendungen mit JMP® (US 2018 408)
Youtube-Video (Jmp 10)
https://www.youtube.com/watch?v=XyiQqUELc2A
Hier ist ein längeres Video mit vielen Details:
Warum verwenden Sie App Builder nicht bereits? - (2023-US-30MP-1401)
Kurzfassung:
Erstellen Sie eine parametrisierte Anwendung mit Application Builder
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Es handelt sich grundsätzlich um etwas, das Sie von Anfang an planen sollten, damit es „einfach“ umsetzbar ist.
Hier ist ein Beispiel, das ich habe: Das Add-In ist in dem Sinne ziemlich einfach, dass es nur Graph Builder (und Partitions-/Bootstrap-Gesamtstruktur) enthält.

Aber zu versuchen, das Skript zu speichern, das das erstellt, wäre ein Albtraum. Es gibt viele versteckte Dinge, die von JMPs Get Script oder Save script to data table (oder einer der Methoden) nicht erfasst werden konnten, und das Add-in ist in mehr als 10 verschiedene .jsl-Dateien unterteilt. Selbst wenn ich die Benutzeroberfläche in der Datentabelle speichern könnte, würde es aufgrund meiner strengen Verwaltung der Namespaces nicht funktionieren, wenn der Benutzer das Skript erneut ausführt (die Benutzeroberfläche hätte beispielsweise keinen Zugriff auf alle verschiedenen Funktionen).In diesem Fall biete ich dem Benutzer also nur die Möglichkeit, die Spaltenauswahl und die Reihenfolge zu speichern (sie können mehrere speichern).Sie können dann verschiedene Eingaben laden, wenn dieselbe Tabelle geöffnet ist, und das Add-In erneut ausführen.

Ich könnte dieses Add-In höchstwahrscheinlich so umgestalten, dass es so funktioniert, dass ich (das meiste davon) in einem Tabellenskript oder einem Skriptfenster speichern könnte, aber ich müsste es von Anfang an neu schreiben.
Ein anderes Add-In (ich kann davon keine Bilder zeigen), das ich habe und das Daten basierend auf Benutzereingaben abfragt, einige Berechnungen durchführt und dann die Ergebnisse mit wenigen Diagrammerstellern und einigen zusätzlichen Spaltenumschaltern/Datenfiltern anzeigt, speichert diese „Plattform“ / Benutzeroberfläche/Visualisierung sofort in der Datentabelle, nachdem die Abfrage und die Berechnungen abgeschlossen sind. Dann führe ich dieses Tabellenskript aus, um dem Benutzer die Ergebnisse anzuzeigen. Dies ist ein ziemlich einfaches Add-In, sodass ich dies ziemlich einfach mit einigen Ausdrücken tun konnte (in der ursprünglichen Version hatte ich die Visualisierung nicht gespeichert, aber es war eine Anfrage der Benutzer, also habe ich sie implementiert).
Und das dritte, an dem ich gerade arbeite (ich kann es wiederum nicht zeigen), macht Ähnliches. Es ruft Daten auf Basis von Benutzereingaben ab, führt Berechnungen darauf durch, zeigt die Analyseergebnisse an und visualisiert sie. Auch hier kann ich nicht die gesamte Benutzeroberfläche in datatable speichern, da dies mit all den Optionen, die ich den Benutzern zur Verfügung stelle, zu aufwändig ist, ABER ich werde eine Schaltfläche hinzufügen, bei der es sich im Grunde um ein „Pop-out-Dashboard“ handelt, das dann nur ein Dashboard erstellt Einige Teile der Benutzeroberfläche und innerhalb dieses „Popout-Dashboards“ kann ich nach Belieben einige zusätzliche Funktionen hinzufügen Design von Anfang an . Und dieses Popout-Dashboard kann dann (hoffentlich) in der Datentabelle gespeichert werden.
Bearbeiten: Ich füge meinen Skripten auch eher selten Rückrufschaltflächen hinzu, da dies ebenfalls mühsam sein kann und lange dauern kann, bis es richtig funktioniert. Ich weiß, dass es ein Skript gibt, das dabei helfen kann, aber es kann die Aufgabe nicht (immer) gut genug ausführen, damit ich sie verwenden kann. Wenn Benutzer anfangen, Rückrufschaltflächen für die meisten der von mir geschriebenen Tools anzufordern, könnte ich darüber nachdenken, ein Skript dafür zu schreiben, das hoffentlich in den meisten Fällen funktionieren würde.
Betreff: JSL: Wie füge ich die Red-Hot-Button-Optionen zu einer Outline-Box hinzu? Oder kannst du?Mit einer GUI, die über den Application Builder generiert wird, ist das alles super einfach – Sie können an der GUI arbeiten, sie optimieren und die neueste Version der vollen Funktionalität als neues Tabellenskript speichern. Bemerken Sie ein implizites „Verwenden Sie dazu besser nicht den Application Builder“ – gibt es eine Funktionalität, die über den Application Builder nicht möglich ist?
Ein Nachteil ist mir aufgefallen:
Für Dashboards, die über eine einfache Sammlung von Plattformobjekten hinausgehen, muss JSL-Code hinzugefügt werden, um die GUI zu automatisieren.
Das Debuggen dieses JSL-Codes fühlt sich viel komplizierter an als in einem JSL-Editor.
Vielleicht weiß ich einfach nicht, wie ich es richtig machen soll.
Gibt es Vorschläge von Application Builder-Benutzern zum Debuggen eines Teils des Codes, z. B. Starten der Anwendung über Application Builder und gleichzeitiges Ausführen von Codeausschnitten im JSL-Editor, um zu überprüfen, was sie tun? Gibt es ein Framework, wie ich auf den Namensraum der Anwendung zugreifen kann, sodass ich Codeausschnitte ohne Änderungen im JSL-Editor verwenden kann?