Références de type HTML dans une fenêtre d'affichage scriptée JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour, j'ai un script qui effectue une analyse sur un ensemble de données donné et produit des résumés sur les premières pages d'un rapport (utilise la commande new window() avec divers objets d'affichage), suivis de N pages d'analyse scénarisée pour N choisi paramètres. Tout cela se trouve dans le même rapport et j'utilise la fonction de saut de page pour séparer chaque paramètre. N peut être n'importe quel nombre... juste quelques ou un millier de paramètres/pages.Est-il possible d'avoir des hyperliens qui peuvent renvoyer à partir du résumé sur la première page environ et pointer vers des cibles dans ce rapport ? Il pourrait pointer soit vers une cible codée, soit vers un numéro de page, que je pourrais essayer de suivre.La référence codée est préférée ... avec 1000 paramètres, le résumé s'étendrait sur plusieurs pages et je ne suis en fait pas sûr de pouvoir suivre le numéro de page.
J'ai vu des liens (par exemple menu d'aide -> exemples de données -> toutes les catégories en ont), mais ils pointent vers un fichier ou je suppose qu'une autre adresse de protocole fonctionnerait également - commandes open() vs web().Mais est-il possible de le coder de manière à ce que je puisse créer un lien et pointer vers un endroit dans la même fenêtre de rapport ?
Notez que parce que j'utilise beaucoup les boîtes d'axe contrôlées dynamiquement/mises à l'échelle et les calculs à la volée, cela doit être fait dans la sortie native 'nouvelle fenêtre()', pas dans une exportation HTML5.
Merci,
Mike
Re : Références de type HTML dans une fenêtre d'affichage scriptée JSLJe parcourais l'index de script jmp aujourd'hui et j'ai vu la fonction de boîte d'affichage 'scroll box()' et cela m'a fait penser que je pouvais l'utiliser comme un pseudo lien hypertexte. J'avais juste besoin de quelque chose de "cliquable" qui agirait lorsqu'on cliquerait dessus.J'avais déjà une boîte de tableau récapitulatif () en haut de mon rapport, donc tout ce que j'avais à faire était de rendre les lignes de la boîte de tableau sélectionnables, et la combinaison de << définir les lignes sélectionnables () et << définir la fonction de changement de ligne () fait exactement cela. Lorsque la sélection change, la fonction s'exécute, le code détermine quelle ligne est sélectionnée et tant que l'ordre du tracé correspond à l'ordre du tableau, nous faisons simplement défiler jusqu'à la référence de la ième boîte de contexte (ou n'importe quelle boîte d'affichage). J'ai essayé de faire défiler jusqu'à 'db[i]' où db[i] = distribution(param[i],.......) mais cela n'a pas fonctionné, mais les boîtes d'affichage appropriées ont fonctionné.
Une partie de ce code est directement issue de l'index de script, en particulier la fonction << set row change function(). La variable 'this' m'a dérouté, mais tout ce qui est est la boîte de table elle-même, qui semble être transmise à la fonction lorsque la sélection de lignes change. Par exemple, si vous essayez d'ajouter 'this' à vlb, cela mettra simplement un autre tableau box() au bas de vlb.
Une chose qui n'est pas bien gérée est si plusieurs lignes sont sélectionnées avec un ctrl + clic (clic cmd sur Mac), mais je ne pense pas que ce soit un gros problème. D'autres méthodes pourraient être utilisées... quelque chose comme une boîte à boutons ou << on change() pourrait être utilisé pour faire défiler jusqu'à la cible. Une zone de liste, par exemple.
Cela a peut-être déjà été posté, mais j'ai pensé que cela valait la peine d'être partagé.Il ne m'a fallu que 7 ans pour comprendre. J'espère que vous le trouverez utile.
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>
Re : Références de type HTML dans une fenêtre d'affichage scriptée JSLMerci Wendy. Je vais revoir avec d'autres utilisateurs et voir si c'est ok. Pour des centaines de paramètres, ce sera toujours un peu de défilement, mais cela ne devrait pas être trop grave.
-Mike
Re : Références de type HTML dans une fenêtre d'affichage scriptée JSLSalut Jef,
J'ai passé du temps à vérifier le sélecteur de colonne. Quelqu'un au Discovery Summit l'avait mentionné (peu de temps après votre séjour d'animateur de jeu télévisé ), mais je ne savais pas qu'il pouvait être ajouté à n'importe quelle plate-forme.J'aime beaucoup la fonction lecture/variation de la vitesse. Cependant, mon script comporte d'autres fonctionnalités intégrées, dont l'une permet à l'utilisateur de redimensionner la taille de la fenêtre sur les distributions à l'aide de boutons radio (l'application est le test électrique des semi-conducteurs en production). J'ai un bouton pour mettre à l'échelle tous les axes des paramètres aux limites existantes (et d'autres tailles de fenêtre comme toutes les données, les retombées latérales basses, les retombées latérales hautes, la médiane +/- N * IQR, etc.). Il est important de conserver ces valeurs min/max telles que l'utilisateur les définit ; il semble que le sélecteur de colonne réinitialise cela.Les autres fonctionnalités incluent la possibilité de grouper en utilisant Anova et GR&R en même temps.
Mais pour cette fonctionnalité spécifique que j'utilise, je règle tous les axes min / max sur les limites de spécification correspondantes. Cela signifie que la seule partie de la distribution indiquée va de la limite minimale à la limite maximale (spécification min/max dans nos tests) ; ceci est utilisé comme point de départ de sorte que tous les paramètres commencent par min / max de la fenêtre = limite min / max spec.Chaque paramètre individuel possède également ces commandes de mise à l'échelle de l'axe, ou un utilisateur peut utiliser la souris pour mettre à l'échelle l'axe.Une fois que l'utilisateur est entré et a mis à l'échelle les paramètres d'intérêt, il y a un bouton en bas pour générer une table de limites. Cela saisit toutes les valeurs d'axe min / max et les sorties dans une table qui peut ensuite être importée dans le programme de test. Cela s'avère être un moyen efficace d'ajuster de nombreuses limites (en particulier avec une option d'interface graphique pour tracer uniquement les N meilleurs rendements).Nous avons d'autres scripts pour définir des limites via le cpk souhaité ou n'importe quel calcul, mais parfois il y a trop de distributions qui ne sont pas idéales et cela fonctionne très bien.
Voici un exemple de sortie, dans ce cas un seul paramètre a été tracé, et je ne l'ai pas regroupé.Les boutons radio mettraient à l'échelle l'axe, et la boîte à boutons en bas récupèrerait toutes les valeurs min / max et générerait le tableau.
Parce que ce script est utilisé pour différentes choses, j'hésite un peu à le réécrire complètement.Mais je verrai si je peux utiliser ce commutateur de colonne d'une manière ou d'une autre dans un proche avenir.

Merci,
Mike
Re : Références de type HTML dans une fenêtre d'affichage scriptée JSLMike,
L'exemple TabBox() précédent devrait enregistrer comme vous le souhaitez au format PDF, mais cela n'offre pas le long rapport que vous recherchez.Voici donc une autre option pour vous.Voir les commentaires intégrés pour plus de détails.
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 );
)
);
Re : Références de type HTML dans une fenêtre d'affichage scriptée JSLje pense que j'utiliserais Commutateur de colonne dans un cas comme celui-ci.
Cela permettra à votre utilisateur de choisir l'analyse qu'il souhaite, sans script supplémentaire de votre part pour mettre à jour une autre fenêtre.
Si vous voulez l'option PDF, vous pouvez mettre un bouton sur la fenêtre qui exécutera tous les paramètres dans une nouvelle fenêtre invisible et l'enregistrera au format PDF.
-Jeff
Re : Références de type HTML dans une fenêtre d'affichage scriptée JSLSalut Wendy,
J'ai pensé à ces lignes comme solution de contournement, mais j'aime l'idée de conserver l'ensemble complet des paramètres dans 1 très long rapport pour l'archivage des rapports. Je peux imprimer en pdf pour que quelqu'un (ou très probablement personne) puisse le voir plus tard. De plus, avec plus de 1000 paramètres, il est parfois agréable de pouvoir parcourir rapidement la page et de simplement rechercher visuellement une distribution qui semble bizarre (asymétrique, bimodale, valeurs aberrantes).
Mon idée était de créer la même fenêtre que j'ai maintenant, mais aussi d'ouvrir une fenêtre séparée la première fois qu'un lien (nom du paramètre) dans le résumé était cliqué. Dans cette fenêtre, il y aurait un ensemble d'analyses et de sorties qui sont essentiellement les mêmes que dans ma fenêtre principale, sauf que dans la fenêtre secondaire, ce ne serait qu'un paramètre, tandis que dans la fenêtre principale, ce serait l'ensemble complet de de nombreux paramètres. Cliquer sur les liens suivants de la fenêtre principale supprimerait le paramètre précédent de la fenêtre secondaire et créerait le nouveau.Il y a plusieurs boutons radio et autres contrôles et mise à l'échelle des axes qui sont effectués, donc je devrais prendre ces informations et les relayer au paramètre correspondant de la fenêtre principale, mais cela fonctionnerait probablement.La seule exception, je pense, serait la mise à l'échelle manuelle de l'axe avec la souris.Je ne pense pas qu'il y ait une fonction d'événement associée à cela (OnAxisChange() par exemple), mais je suppose qu'un bouton "Terminé" pourrait être implémenté pour saisir le nouveau min/max et le renvoyer dans les paramètres de la fenêtre principale. axe.
Merci,
Mike
Re : Références de type HTML dans une fenêtre d'affichage scriptée JSLSalut Mike.
Avez-vous envisagé d'utiliser TabBox() ?Il existe un style d'onglet appelé "Combo" qui produit un menu déroulant de chaque nom d'onglet afin que l'utilisateur puisse sélectionner et accéder directement à cet onglet.Voici un exemple simple :
/* 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" );