Boîte d'édition de numéro sur le script de modificationJe suis nouveau sur JSL et Application Builder, alors soyez indulgent avec moi.
J'essaie de créer une boîte de dialogue contenant une série de boîtes d'édition de nombres apparié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 ceci 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 une aide serait appréciée.
Re : Boîte d'édition du numéro sur le script de modificationMerci les gars pour votre aide!!!
Re : Boîte d'édition du 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 qui peut être utile.
Re : Boîte d'édition du numéro sur le script de modificationOui, vous pouvez ouvrir les fichiers de création d'application enregistrés dans un éditeur de texte, mais l'interface graphique de création d'application est le seul moyen pris en charge pour modifier le fichier. (Cela vaut toujours le coup d'œil 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
Re : Boîte d'édition du 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'à la base de beaucoup de mes problèmes, je n'ai pas trouvé de documentation détaillée pour App Builder (AB). Il 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 de la Number Edit Box (NEB). J'avance à tâtons ici, évidemment.
Un 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 d'entrée. 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.Existe-t-il également un moyen de voir le code généré par AB pour l'interface ?
Re : Boîte d'édition du numéro sur le script de modificationVoici l'exemple.Créé à l'aide de JMP 13, il est donc possible qu'il ne fonctionne pas dans les versions antérieures.
Re : Boîte d'édition du numéro sur le script de modificationVous devez configurer des scripts à appeler pour chacune des zones d'édition de numéro.J'ai créé un exemple simple:
heure_début_neb : zone d'édition numérique pour l'heure de début
heure_de_fin_neb : zone d'édition du numéro pour l'heure de fin
J'ai cliqué avec le bouton droit de la souris sur chacune des zones d'édition de nombres et sélectionné Scénarios > Scénarios (pas de numéro changé).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 : Boîte d'édition du numéro sur le script de modificationQuelques trucs à essayer :
1. Regardez dans la fenêtre du journal - bien que 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, 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 : Boîte d'édition du 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>