Aide avec la boîte contextuelle du filtre de données()J'ai du mal à insérer une boîte de contexte de filtre de données dans mon script. Mon script est utilisé pour extraire des données via SQL, exécuter certaines fonctions de table, puis cracher des graphiques à l'intérieur de fenêtres à onglets. Cela le rend visuellement plus agréable que ce que je faisais car chaque sortie unique était associée à une nouvelle fenêtre et les ingénieurs de test devaient cliquer sur plusieurs boutons.
J'ai lu ces conseils ainsi que la lecture du guide de script. Le problème que j'ai est de savoir comment l'insérer une fois que les graphiques et les distributions sont remplis. Du guide de script.
J'ai essayé d'utiliser la même philosophie que M. txnelson m'a aidé mais je n'arrive pas à créer une boîte temporaire puis à la remplir après avoir cliqué sur mes boutons. Encore une fois, toute aide est appréciée.
d
guide,
// --------------------------- From Scripting Guide -------------------------
dt = Open( "$SAMPLE_DATA/Hollywood Movies.jmp" );
win = New Window( "Shared Local Filter",
Data Filter Context Box(
// enclose the h list box that contains distribution and graph builder
H List Box(
// add the local data filter
// NOTE: My tables aren't created yet so i am getting an error here.
dt << Data Filter( Local ),
dt << Distribution(
Weight( :Profitability ),
Nominal Distribution(
Column( :Lead Studio Name )
),
Nominal Distribution(
Column( :Genre )
),
Histograms Only
),
dt << Graph Builder(
Variables(
X( :Genre ),
Y( :Domestic Gross ),
Y( :Foreign Gross, Position( 1 ) )
),
Show Control Panel( 0 ),
Elements(
Bar( X, Y( 1 ), Y( 2 ),
Legend( 2 ),
Bar Style( "Side by side" ),
Summary Statistic( "Mean" )
),
Frequencies( 0 ),
)
)
)
)
);
// --------------------------- My Data Pull Script Simplified -------------------------
Names Default To Here( 1 );
Close All( Data Tables, No Save );
Close All( Reports );
Clear Log();
Close All( journals, no save );
Clear Symbols();
sqlstartA = Today();
sqlendA = Today();
sqlstart = Format( sqlstartA, "yyyy-mm-dd" );
sqlend = Format( sqlendA, "yyyy-mm-dd" );
/************************************************************************************************************************************************/
/* */
/* ---------------------------------------------------------------[START EXAMPLE] ----------------------------------------------------------- */
/* */
/************************************************************************************************************************************************/
hay = New Window( "Test Database Tools",
V List Box(
V List Box(
Text Box(
"Product Engineering Database Tools",
<<SET font="" size=""></SET>
Re : Aide avec la boîte de contexte de filtre de données()Cela a parfaitement fonctionné, merci. Je dois lire "Is Scriptable" et voir comment il pourrait être utilisé autrement
Re : Aide avec la boîte de contexte de filtre de données()Oui, j'ai d'abord remarqué que le "Charger les données de test" duplique des parties de l'interface (le filtre), et comme vous le soulignez, le "Cliquez ici lorsque vous avez terminé" duplique également l'interface utilisateur.Vous avez mentionné que vous rencontriez des difficultés pour supprimer la boîte, mais je ne savais pas si vous vouliez (a) supprimer les contrôles afin qu'ils ne puissent être utilisés qu'une seule fois (b) supprimer le filtre afin que vous puissiez le remplacer par un autre.Ma réponse précédente était de démontrer un moyen de (a) sans avoir à supprimer quoi que ce soit - il suffit de masquer et d'afficher différentes parties de la fenêtre en fonction de l'état.
Ci-joint une autre modification du script que j'ai changé pour supprimer les composants.J'enregistre une référence aux cases qui sont ajoutées à l'affichage.Chaque fois que les cases sont ajoutées, il appellera d'abord << Supprimer la case sur les cases précédemment ajoutées.
Re : Aide avec la boîte de contexte de filtre de données()Mes excuses. Si vous exécutez le script que vous avez corrigé et cliquez sur le bouton "Cliquez ici lorsque vous avez terminé", il continue d'ajouter la boîte d'affichage. J'aurais pu jurer que vous l'avez souligné lorsque vous avez répondu, mais maintenant je me rends compte que c'était lié à un sujet différent.
Re : Aide avec la boîte de contexte de filtre de données()Je ne suis pas clair sur ce que vous essayez de faire à l'intérieur de la boucle.Si vous souhaitez que les contrôles disparaissent, vous pouvez soit les supprimer, soit simplement les masquer.Les masquer n'est peut-être pas idéal - ils sont toujours dans l'arborescence d'affichage - mais c'est une approche courante.Voici un exemple qui guide l'utilisateur à travers plusieurs étapes de saisie, en masquant les commandes à chaque étape :
New Window( "Wizard Interface",
top = H List Box(
// Control panels
controls = Panel Box( "Inputs",
panel1 = V List Box(
Text Box("Panel 1"),
Button Box( "Next",
panel1 << Visibility( "Collapse" );
panel2 << Visibility( "Visible" );
)
),
panel2 = V List Box(
Text Box("Panel 2"),
Button Box( "Next",
panel2 << Visibility( "Collapse" );
panel3 << Visibility( "Visible" );
),
<<VISIBILITY></VISIBILITY>
Est-ce similaire à ce que vous voulez faire ?
Re : Aide avec la boîte de contexte de filtre de données()Je crois que je peux accomplir l'ajout de cette fenêtre en utilisant une boucle for. Exactement comment j'ai mis le code le i < =
Merci
For( i = 1, i <= /* not sure what i would put in here */ , i ++,<BR /> sqlstart = Format( sqlstartA, "yyyy-mm-dd" );<BR /> sqlend = Format( sqlendA, "yyyy-mm-dd" );<BR /> Show( sqlstart, sqlend );<BR /> lineup1 << Append(<BR /> V List Box(<BR /> Spacer Box( Size( 5, 5 ) ), <BR /> Text Box( "Select Your Wafer(s)", <BR /> << Set Font Size( 15 ), <BR /> << Justify Text( "Center" ) <BR /> ),<BR /> Spacer Box( Size( 5, 15 ) ),<BR /> loaddata = Button Box( "Load The Test Data",<BR /> dt = current data table();<BR />// dt = Open( "$SAMPLE_DATA/big class.jmp", invisible )<BR /><BR />// Insert End of Script<BR />
Re : Aide avec la boîte de contexte de filtre de données()Comme vous l'avez souligné dans votre réponse, le problème avec "Cliquez ici lorsque vous avez terminé" ajoute la fenêtre lorsque vous cliquez dessus. J'ai essayé de << supprimer la boîte () et quelques autres choses qui ont échoué. J'ai cependant réussi à insérer des instructions Throw() lorsqu'aucune date ou plaquette n'a été sélectionnée. Celui-ci s'avère difficile. Aucune suggestion?Re : Aide avec la boîte de contexte de filtre de données()Merci pour votre aide et celle de Jim. Je n'ai pas du tout pensé au recalcul automatique. Et un merci spécial pour l'ajout de Data Filter Context Box(). J'essayais de l'utiliser mais je n'arrivais pas à trouver le bon emplacement.
Quant au calendrier, je suis entièrement d'accord avec vous. Faites-en une boîte de contour qui peut s'ouvrir et se fermer.
La fenêtre principale nécessite quelques ajouts et ajustements une fois que j'ai obtenu tous les graphiques, distributions, Fit Y by X et Wafer Maps (boîte à outils pour semi-conducteurs) dans les fenêtres appropriées. Les problèmes que vous et Jim résolvez sont les fruits à portée de main en ce qui concerne cet outil d'analyse. Je pense que le plus gros obstacle va être la façon dont je gère les valeurs aberrantes. J'ai trouvé GrubbsOutlierTest3.jsl sur ces forums et je l'utiliserai d'une manière ou d'une autre.
Merci encore.
d
Re : Aide avec la boîte de contexte de filtre de données()Bien que vous ne puissiez pas redimensionner l'objet Boîte de calendrier, vous pouvez utiliser une boîte d'édition de nombre à la place dans le même but. Définissez le format sur le style de date souhaité, puis il présentera un calendrier lors de l'interaction, mais sinon, ce n'est qu'une petite boîte.
Names Default to Here( 1 );
nw = New Window( "Date Entry",
Outline Box( "Calendar Box Substitute",
neb = Number Edit Box( 01Jan2019,
<< Set Format( Format( "m/d/y", 12 ) )
)
),
H List Box(
Button Box( "OK",
date = neb << Get;
),
Button Box( "Cancel" )
)
);
Re : Aide avec la boîte de contexte de filtre de données()J'ai joint une version mise à jour de votre script.Comme le souligne Jim, le recalcul automatique n'est pas défini sur la distribution.La raison en est que vos filtres de données sont des filtres globaux et non des filtres locaux.Dans votre script, notez que même si tous les rapports semblent être mis à jour, les états des lignes de la table de données changent et les résultats sont mis à jour sur les deux onglets.
J'ai apporté deux modifications pour rendre les filtres locaux :
- Ajouter l'option "Local" aux commandes Data Filter()
- Modification de votre HListBox() en une boîte de contexte de filtre de données() sur chaque onglet.Cela permet de conserver l'effet de chaque filtre local sur l'onglet
Le filtre de données local définira automatiquement l'indicateur de recalcul automatique sur chaque plate-forme associée.
Je ne connais pas de moyen de réduire le calendrier.Je ne sais pas quel flux de travail vous recherchez après la sélection initiale de la date.Vous pouvez envisager deux fenêtres, une fenêtre de lancement avec sélection de date et une fenêtre de résultats affichant les rapports.Vous pouvez inclure la plage de dates en tant que sous-titre.
Si vous souhaitez conserver les deux dans la même fenêtre, vous pouvez placer les calendriers dans un nœud de plan qui utilise <Re : Aide avec la boîte de contexte de filtre de données()Cela prend tout son sens. Merci pour votre aide.
Re : Aide avec la boîte de contexte de filtre de données()La raison pour laquelle votre distribution ne change pas lorsque vous modifiez les sélections dans votre filtre de données est que l'option "Recalcul automatique (1)" n'est pas définie dans le JSL pour les distributions.
Concernant le redimensionnement des Calendar Boxes, je ne vois pas comment changer leur taille. Un autre membre de la communauté peut avoir une méthode, mais je n'en trouve pas.
Re : Aide avec la boîte de contexte de filtre de données()
Monsieur Nelson,
J'ai essayé de mettre cela dans mon script et il semble qu'il ne mette à jour qu'une partie des graphiques/distributions.J'ai joint un script mis à jour qui correspond exactement à ce que j'essaie de faire avec les ajouts de quelques autres onglets derrière les deux que vous voyez.
J'ai également joint un bon exemple d'un ensemble de données que je tire. Ce tableau comprend 3 tranches de données pour vous donner une idée.
De plus, j'aimerais savoir s'il existe un moyen de redimensionner les cases du calendrier afin qu'elles prennent moins de place, ce qui en laisse plus pour l'analyse.
Merci
Re : Aide avec la boîte de contexte de filtre de données()Désolé de ne pas avoir précisé.
Oui, un filtre de données local qui affecte tous les graphiques de l'onglet, .. Je vais regarder votre script dans un instant.
Merci
Re : Aide avec la boîte de contexte de filtre de données()Souhaitez-vous ajouter un ou plusieurs filtres de données locaux pour des tableaux/graphiques spécifiques ?
Cherchez-vous à ajouter un filtre qui modifie tous les graphiques en fonction d'un seul filtre ?
Souhaitez-vous que l'utilisateur clique sur l'une des barres de l'histogramme et, à partir des lignes sélectionnées, modifie les autres tableaux et graphiques ?
Attaché est une modification de votre script qui ajoute un filtre de données à gauche de la sortie de la plate-forme de distribution et, lorsqu'il est sélectionné, modifie tous les graphiques joints au tableau de données.