Comment fermer le filtre de données de table existant au début du nouveau scriptJ'ai un script qui ajoute un filtre à une table de données déjà ouverte. Parfois, un utilisateur a déjà ouvert (manuellement) un filtre de données sur cette table avant que le script ne soit appelé.
Un tel filtre de données existant semble interférer avec l'effet de mon nouveau filtre scripté - même si je fais un dt << Clear Row States au début de mon script.
J'aimerais donc avoir une déclaration au début de mon script qui ferme tout/tous les filtres de table existants. Mais je n'arrive pas à comprendre comment référencer un filtre de données ouvert arbitraire que quelqu'un d'autre a déjà créé en dehors de mon propre script. Suggestions?
Re : Comment fermer le filtre de données de table existant au début d'un nouveau scriptJ'ai trouvé dans le Scripting Index que l'on peut référencer une table de données via
dt = data table(i);
dt = data table(name);
et obtenir le nom via
dt << get name();
Existe-t-il également une fonction pour obtenir "i".
Je veux dire directement, pas via
Loc(Get Data Table List(),data table(2))
Oh, je viens de remarquer que les filtres de données ont leur propre index - indépendant des tables de données respectives ...
Alors Ajusteur de données[i] ne peut pas être utilisé pour accéder à un filtre de données spécifique (via table de données-> i --> filtre de données) ?
Re : Comment fermer le filtre de données de table existant au début d'un nouveau scriptData Filter[i]
cool!
Où est-ce documenté ?
Re : Comment fermer le filtre de données de table existant au début d'un nouveau scriptEn faisant des bêtises, j'ai trouvé une solution simple :
For( i = N Items( Get Window List() ), i >= 1, i--,
Try(
Data Filter[i] << Close;<BR /> Data Table[i] << Clear Row States // optional, if you want to<BR /> )<BR />);Je n'avais aucune idée de la syntaxe Data Filter[i]. C'est simple.
Re : Comment fermer le filtre de données de table existant au début d'un nouveau scriptMerci beaucoup, gz.
La fonction xpath est géniale ! Il se trouve que je viens d'un milieu XML et que j'ai utilisé xpath dans le passé. Mais j'ignorais complètement que vous pouviez l'utiliser de cette façon dans JMP.Et j'ai trouvé difficile de naviguer dans les arborescences d'affichage jusqu'à présent. C'est donc une vraie trouvaille. Très utile!
Re : Comment fermer le filtre de données de table existant au début d'un nouveau script@john_madden ,
Si vous voulez seulement appuyer sur le bouton de sélection de réinitialisation à un moment donné, voici le script.
Ce scénario
- recherche un filtre de données de table.
- S'il le trouve, il recherche un bouton visible avec le titre "Réinitialiser la sélection".
- Si le bouton est trouvé, cliquez dessus.
Names Default to Here(1);
dt = current data table();
dtname = dt << get name;
winList = get window List();
found = 0; _xzz=empty();
For(i=nitems(winList), i>=1 & !found, i--,
nme = winList[i] << Get Window Title;
If(Starts With(nme,"Data Filter") & Contains(nme,dtname),
found =1;
_xzz = winList[i] <<XPATH> 0, _xzz[1] << Click);
);
);</XPATH>
Si vous souhaitez que cette action soit effectuée plus qu'au début de votre script, vous aurez besoin d'un gestionnaire ou d'un abonnement pour définir quand elle doit être exécutée.
J'espère que ça t'as aidé.
La syntaxe XPath peut sembler un peu étrange, mais elle est très puissante car l'arborescence des rapports JMP est associée à une description XML.J'ai joint un script écrit pour le chapitre 6, section "Scriptable Object and XPath" de Compagnon JSL, Applications du langage de script JMP, deuxième édition . Le script fournit une introduction limitée, quelques exemples simples et des liens pour en savoir plus.
Re : Comment fermer le filtre de données de table existant au début d'un nouveau script@john_madden ,
Ce n'est pas clair pour moi quelle action vous voulez. Par exemple:
- Ex1 : Supposons que Big Class soit ouvert, le filtre de données associé était sur l'âge de la colonne et les 13 et 14 ans ont été sélectionnés dans le filtre. Puis une autre candidature a sélectionné des filles de 15 ans. Le bouton Réinitialiser apparaît. Si cliqué, il renvoie la sélection de table définie dans la table Filtre de données. Est-ce que c'est ce que tu veux?
- Ex2 : même scénario de départ que Ex1, mais un utilisateur supprime quelques lignes de la table de données. Le bouton Réinitialiser n'apparaît pas et les sélections précédentes n'apparaissent plus dans le filtre de données.
Il existe des méthodes/fonctions appelées "gestionnaires" pour un filtre de données et une table
- Créer un gestionnaire de filtre de données
- Créer un gestionnaire d'état de ligne
- S'abonner (pour un tableau de données)
Une fois défini/activé, une action peut être entreprise si l'état des lignes change, si des lignes sont supprimées, etc.
Si vous êtes juste intéressé par le bouton Réinitialiser, je suppose (je ne l'ai pas encore testé), le script précédent que j'ai envoyé peut être modifié pour trouver le filtre de données et si le bouton Réinitialiser n'est pas réduit (est visible), un clic peut être envoyé à celui-ci. Cependant, avant d'envoyer un script modifié, une meilleure description de l'action attendue serait utile.
Autre considération, si un utilisateur ajoute un filtre de données local sur un rapport, la table et si elle a un filtre de données ne reflète pas les sélections de l'utilisateur à partir du filtre de données local du rapport.
Re : Comment fermer le filtre de données de table existant au début d'un nouveau scriptCela fonctionne, mais je pense avoir réalisé un peu plus en détail ce qui se passe, ce qui pourrait suggérer une autre solution.
Si vous créez un tableau avec un filtre, puis que vous modifiez la sélection de lignes du tableau ailleurs (c'est le cas pour moi), il apparaît ce qui suit dans le filtre de données :


Je pense que ce dont j'ai besoin est l'équivalent du script en appuyant sur le bouton "Réinitialiser la sélection".
Est-ce possible?
Re : Comment fermer le filtre de données de table existant au début d'un nouveau script@john_madden ,
Depuis JMP 14, la seule méthode que je connaisse est la force brute. Voir ci-dessous. Noter Recommencer efface l'état de sélection de la table
Names Default to Here(1);
dt = current data table();
dtname = dt << get name;
winList = get window List();
found = 0;
For(i=nitems(winList), i>=1 & !found, i--,
nme = winList[i] << Get Window Title;
If(Starts With(nme,"Data Filter") & Contains(nme,dtname),
found =1;
(winList[i] << child << get scriptable object) << Start Over;
window(nme) << close window();
);
show(i, nme, found);
);
Si vous travaillez avec une application et que l'utilisateur ajoute un filtre de données local et que vos analyses doivent être supprimées, vous pouvez utiliser XPath pour le trouver, obtenir le script, supprimer le filtre trouvé, effectuer votre analyse et restaurer via le script enregistré.
Le JSL joint ci-dessous montre comment utiliser XPath pour gérer un filtre de données sur une analyse spécifique.
J'espère que ça t'as aidé.