JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Salut tout le monde,
Je souhaite savoir comment (si possible) ajouter le menu de boutons rouges à votre propre boîte de contour définie. Par exemple, avec la plate-forme Graph Builder, il existe un bouton rouge qui permet des choses comme « Enregistrer le script dans la table de données » et d'autres options.

J'ai écrit d'autres scripts dans lesquels j'aimerais avoir cette option. La boîte de contour est livrée avec le petit triangle gris pour certaines options, mais elle n'offre pas les options de boutons rouges. Par exemple:

J'ai effectué une recherche dans l'index des scripts et le guide des scripts et je n'ai trouvé aucune documentation à ce sujet.
Est-ce que quelqu'un sait si c'est possible ? Et si oui, comment ?
Merci!,
DS
Automatisation et scriptsPersonnalisation de massePartager et communiquer les résultatsles fenêtresRe : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Recherchez-vous éventuellement << Définir le script de menu ? Exemple d'index de script
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);

Il y a aussi quelque chose à ce sujet dans l'aide JMP, mais il est très très difficile à trouver en raison de l'horrible recherche de la page d'aide JMP ( https://www.jmp.com/support/help/en/17.2/#page/jmp/construct-display-boxes-for-new-windows.shtml#ww883930 )

Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Vidéo tutoriel :
Introduction au langage de script JMP chapitre 5.3 à 10h30
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Salut @jthi et @hogi ,
Merci pour les informations sur par où commencer ce processus, c'est très utile. Et ce n’est vraiment qu’en partie une solution pour le moment.
J'ai pu ajouter un script de menu - pour le moment, j'ajoute seulement deux choses : un filtre de données local et le script de sauvegarde (3 options) : à la table de données, à la fenêtre de script et au Journal.
À l'heure actuelle, le filtre de données local et l'enregistrement du script dans le journal fonctionnent très bien. Ce avec quoi j'ai plus de mal, c'est de faire fonctionner le script de sauvegarde dans la table de données et le script de sauvegarde dans les fonctionnalités de la fenêtre de script. Vous trouverez ci-dessous la section de code dans laquelle il active le script de menu, puis attribue l'action pour chaque élément de menu sélectionné.
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>Ma fenêtre de rapport personnalisé ressemble à ceci :

J'aimerais avoir la possibilité que l'utilisateur puisse sélectionner le script de sauvegarde dans la table de données (ou la fenêtre de script) et qu'il enregistre essentiellement le script utilisé pour générer ce rapport personnalisé afin que cette analyse puisse être enregistrée dans la table de données et quelqu'un peut cliquer sur la flèche de script verte à côté du script et réexécuter l'analyse sans avoir à réexécuter l'intégralité du complément.
En lisant les informations à ce sujet dans l'index de script, il apparaît que seuls les objets tels que les rapports de plate-forme (par exemple, Graph Builder ou Time Series) peuvent être enregistrés individuellement dans la table de données, mais l'intégralité de l'objet Outline Box, qui est ma fenêtre de rapport, ne le fait pas. Je n'accepte pas ce genre de commande send (<<). Je préférerais ne pas enregistrer chaque objet de plate-forme individuellement, mais plutôt l'intégralité du code de script après l'avoir utilisé pour effectuer l'analyse dans la table de données/la fenêtre de script.
Je ne sais pas exactement pourquoi, mais c'est peut-être parce que mon code est structuré différemment, car j'utilise plusieurs instructions Expr. A titre indicatif, mon code est structuré comme suit :
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.
Si l'un de vous a des idées ou des réflexions sur la façon dont je pourrais procéder (ce que j'espère que mon explication a du sens), j'apprécie vos commentaires à ce sujet.
Merci!,
DS
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Pour ajouter un filtre de données et enregistrer le script du rapport dans la table de données - si vous travaillez sur un PC Windows , vous pourriez envisager d'utiliser la barre d'outils de rapport :

Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Demander le script à la boîte de contour renvoie simplement quelque chose comme l'arborescence d'affichage.
Donc, cela ne fonctionne pas non plus.
Lorsque vous générez le rapport, vous disposez de l’expression entière pour générer le rapport.
Ainsi, lorsque l'utilisateur clique sur enregistrer le script, vous pouvez simplement utiliser cette expression et l'enregistrer en tant que script.
[les modifications apportées par l'utilisateur par la suite ne seront pas enregistrées]
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
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Enregistrer le script qui crée cette fenêtre personnalisée sera généralement très difficile car vous devrez essentiellement inclure l'intégralité du complément dans ce script, avec les choix de l'utilisateur appliqués (et ce serait alors la même chose que l'utilisateur réexécutant le complément). dans). J'ai eu au moins quelques solutions différentes pour quelque chose comme ça (je n'essaie pas de sauvegarder toute la fenêtre car mes compléments sont généralement trop compliqués pour cela) :
- Enregistrez une sorte de variable de paramètres dans la table de données que l'utilisateur peut ensuite charger dans votre complément pour la "remplir"
- Ne sauvegardez pas l'intégralité du script mais plutôt une sorte de solution de type "tableau de bord" avec peu de fonctionnalités
- Enregistrez juste quelques parties plus simples sous forme de script(s) de table
- Et peut-être quelques autres dont je ne me souviens pas pour l'instant...
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Je pense que la meilleure idée n'est pas de générer le rapport PAS manuellement - mais via Générateur de tableaux de bord .
Dans le tableau de bord généré, il y a un menu triangulaire rouge avec une option pour enregistrer le script (du tableau de bord).
... et depuis Jmp17 il existe même une option pour enregistrer une version simplifiée qui ressemble à un script généré manuellement :

Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Ajout aux suggestions de @jthi , vous pouvez créer une fonction que vous appelez dans votre complément, puis votre script de sauvegarde n'est que l'appel de fonction. Il faudra un peu de gestion pour s'assurer que la fonction est bien conçue et gère les options dont vous avez besoin, mais si vous créez une boîte de dialogue pour lancer votre complément, vous avez probablement déjà défini de nombreux arguments.
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Salut @jthi , @hogi , et @Jeff_Perkinson ,
J’apprécie les commentaires, les réflexions et les discussions. Eh bien, il semble que cela soit plus délicat que je ne le pensais. Cela ne veut pas dire que ce n'est pas faisable, mais cela ne sera pas aussi "simple" que d'ajouter le script de menu à la zone de plan. Je devrai peut-être mijoter et mâcher certaines des idées ici.
@hogi , j'ai essayé l'enregistrement du script dans la fenêtre ainsi que l'enregistrement du script pour tous les objets dans la table de données, mais aucun d'eux n'a fonctionné comme je l'avais prévu.
Si je trouve la solution que je recherche, je ne manquerai pas de mettre à jour cet article avec la façon dont je l'ai résolu au cas où d'autres rencontreraient ce problème et seraient intéressés.
Merci tout le monde!,
DS
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Application/Dashboard Builder est incroyablement utile - ça vaut la peine de l'essayer 
Création de tableaux de bord et d'applications avec JMP® (US 2018 408)
Vidéo Youtube (Jmp10)
https://www.youtube.com/watch?v=XyiQquUELc2A
voici une vidéo plus longue avec beaucoup de détails :
Pourquoi n’utilisez-vous pas déjà App Builder ? - (2023-US-30MP-1401)
version courte:
Créer une application paramétrée avec Application Builder
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?C'est fondamentalement quelque chose que vous devez concevoir dès le début pour le rendre « facilement » réalisable.
Voici un exemple que j'ai, le complément est assez simple en ce sens, qu'il ne contient que des générateurs de graphiques (et une forêt de partitions/amorçage).

Mais essayer de sauvegarder le script qui construit cela serait un cauchemar. Il existe de nombreux éléments cachés qui n'ont pas pu être capturés par Get Script de JMP ou enregistré le script dans la table de données (ou l'une des méthodes) et le complément est divisé en plus de 10 fichiers .jsl différents. Même si je pouvais enregistrer l'interface utilisateur dans la table de données, cela ne fonctionnerait pas lorsque l'utilisateur réexécuterait le script en raison de ma gestion stricte des espaces de noms (l'interface utilisateur n'aurait pas accès à toutes les différentes fonctions par exemple).Donc, dans ce cas, je propose uniquement à l'utilisateur une option pour enregistrer les sélections de colonnes et l'ordre (ils peuvent en enregistrer plusieurs).Ils peuvent ensuite charger différentes entrées lorsque la même table est ouverte et réexécuter le complément.

Je pourrais très probablement refactoriser ce complément pour qu'il fonctionne de telle manière que je puisse enregistrer (la majeure partie) dans un script de table ou une fenêtre de script, mais je devrais le réécrire depuis le début.
Autre complément (je ne peux pas montrer de photos de cela) que j'ai qui interroge les données en fonction des entrées de l'utilisateur, effectue des calculs, puis affiche les résultats avec quelques générateurs de graphiques et quelques commutateurs de colonnes/filtres de données supplémentaires, enregistre cette "plate-forme" / Interface utilisateur/visualisation immédiatement dans la table de données une fois la requête et les calculs terminés. Ensuite, j'exécute ce script de table pour montrer les résultats à l'utilisateur. Il s'agit d'un complément assez simple, donc je pourrais le faire assez facilement avec certaines expressions (la version initiale que j'avais n'avait pas enregistré la visualisation, mais c'était une demande des utilisateurs, donc je l'ai implémenté).
Et le troisième sur lequel je travaille actuellement (encore une fois, je ne peux pas le montrer), fait la même chose. Il obtient des données basées sur les entrées de l'utilisateur, effectue des calculs, affiche les résultats de l'analyse et les visualise. Encore une fois, je ne peux pas enregistrer l'intégralité de l'interface utilisateur dans datatable car c'est trop compliqué avec toutes les options que je propose aux utilisateurs MAIS j'ajouterai un bouton qui est essentiellement un "tableau de bord contextuel" qui ne créera alors qu'un tableau de bord de seulement certaines parties de l'interface utilisateur et dans ce "tableau de bord contextuel", je peux ajouter quelques fonctionnalités supplémentaires comme je le ferai concevoir dès le départ . Et ce tableau de bord contextuel peut ensuite être enregistré (espérons-le) dans un tableau de données.
Edit : j'ajoute également assez rarement des boutons de rappel à mes scripts, car cela peut également être compliqué et prendre beaucoup de temps pour fonctionner correctement. Je sais qu'il existe un script qui peut m'aider, mais il ne peut pas accomplir la tâche (toujours) suffisamment bien pour que je puisse l'utiliser. Si les utilisateurs commencent à demander des boutons de rappel pour la plupart des outils que j'ai écrits, je pourrais envisager d'écrire un script pour cela qui, espérons-le, fonctionnera dans la plupart des cas.
Re : JSL : Comment ajouter les options du bouton rouge à une boîte de contour ? Ou pouvez-vous ?Avec une interface graphique générée via Application Builder, tout cela est très simple : vous pouvez travailler sur l'interface graphique, l'optimiser et enregistrer la dernière version de toutes les fonctionnalités en tant que nouveau script de table. Remarquer un implicite "mieux vaut ne pas utiliser le générateur d'applications pour faire cela" - existe-t-il une fonctionnalité qui n'est pas possible via Application Builder ?
Un inconvénient que j'ai remarqué :
Pour les tableaux de bord qui vont au-delà d'une simple collection d'objets de plateforme, du code JSL doit être ajouté pour automatiser l'interface graphique.
Le débogage de ce code JSL semble beaucoup plus compliqué que dans un éditeur JSL.
Peut-être que je ne sais tout simplement pas comment le faire correctement.
Existe-t-il des suggestions de la part des utilisateurs d'Application Builder sur la façon de déboguer une partie du code, par exemple démarrer l'application à partir d'Application Builder et exécuter en parallèle des extraits de code dans l'éditeur JSL pour vérifier ce qu'ils font ? Existe-t-il un cadre permettant d'accéder à l'espace de noms de l'application afin que je puisse utiliser des extraits de code dans l'éditeur JSL sans aucune modification ?