Zone d'édition de numéro sur le script de modificationJe suis nouveau sur JSL et Application Builder, alors soyez indulgents avec moi.
J'essaie de créer une boîte de dialogue contenant une série de zones d'édition de numéros associées.L'un de chaque paire représente une heure de « début » et l'autre une heure de « fin » correspondante :
Je veux éviter la situation où l'utilisateur met une heure de « début » plus tard que l'heure de « fin », ou une heure de « fin » avant l'heure de « début ».
Ma première pensée a été d'ajouter un script "on change" à chaque case, quelque chose comme ceci pour la case "start":
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
et comme ça pour la case "fin":
If( Start << Get > End << Get,
Start << Set( End << Get )
);
Mais cela ne fonctionne pas (dans le sens où rien ne se passe lorsque la condition indésirable se produit).
Je fais probablement quelque chose d'assez stupide, mais de l'aide serait appréciée.
Re : Zone d'édition de numéro sur le script de modificationMerci les gars pour votre aide!!!
Re : Zone d'édition de numéro sur le script de modificationApplication Builder prend un certain temps à apprendre, mais cela en vaut la peine.Je l'utilise depuis la version 10 de JMP, et il s'améliore à chaque version.J'ai joint une présentation que j'ai donnée à la table ronde JMP Discovery 2013 JSL et qui pourrait être utile.
Re : Zone d'édition de numéro sur le script de modificationOui, vous pouvez ouvrir les fichiers du générateur d'applications enregistrés dans un éditeur de texte, mais l'interface graphique du générateur d'applications est le seul moyen pris en charge pour modifier le fichier. (Ça vaut toujours le coup d'oeil si vous voulez avoir une idée de ce qui se passe lorsque le script est ouvert.)
Voici quelques liens vers des ressources sur le Web.
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
[vidéo]
Re : Zone d'édition de numéro sur le script de modificationMerci à vous tous pour vos excellentes suggestions. Je ne les ai pas encore tous essayés, mais je le ferai dès que j'aurai une pause dans mon "vrai" travail.
En attendant, je pense qu'à l'origine de beaucoup de mes problèmes, c'est que je n'ai pas trouvé de documentation détaillée pour App Builder (AB). Cela doit exister, mais je ne le trouve pas. Est-ce que quelqu'un a un lien?
Par exemple, je ne savais pas à quoi servait le champ "Script" du menu Propriétés d'AB, et je n'ai pas fait le lien avec la documentation Number Edit Box (NEB). Je tâtonne ici, évidemment.
Autre exemple de ma confusion, le champ de saisie « Incrément » dans le volet Propriétés AB pour les NEB existe, mais n'acceptera pas de saisie. Je pourrais continuer…
Comme je l'ai dit, une bonne documentation sur AB, ainsi que d'excellents exemples de scripts de boîtes de dialogue modales complexes seraient formidables.De plus, existe-t-il un moyen de voir réellement le code généré par AB pour l'interface ?
Re : Zone d'édition de numéro sur le script de modificationVoici l'exemple.Créé à l'aide de JMP 13, il se peut donc qu'il ne fonctionne pas dans les versions antérieures.
Re : Zone d'édition de numéro sur le script de modificationVous devez configurer des scripts pour appeler chacune des zones d'édition de numéros.J'ai créé un exemple simple :
start_time_neb : zone d'édition du numéro pour l'heure de début
end_time_neb : zone d'édition du numéro pour l'heure de fin
J'ai cliqué avec le bouton droit sur chacune des zones d'édition de numéros et sélectionné Scripts > Script (pas de numéro modifié).Voici les scripts que j'ai ajoutés :
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
Re : Zone d'édition de numéro sur le script de modificationQuelques choses à essayer :
1. Regardez dans la fenêtre du journal - même si rien ne semble se produire, une erreur peut être signalée qui vous donnera un indice.
2. Réduisez le code à quelque chose d’aussi simple que possible.Cela vous aidera à déterminer ce qui fonctionne et ce qui ne fonctionne pas.Par exemple, cela semble fonctionner comme vous le décrivez :
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
Re : Zone d'édition de numéro sur le script de modificationVous pouvez le faire en définissant les valeurs Min/Max pour les NumberEditBoxes de début et de fin dans SetFunction (au lieu de OnChange).
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>