Le script sur lequel je travaille possède une fonction qui crée une zone de date avec une valeur par défaut en argument. Si l'utilisateur saisit un texte qui ne peut pas être reconnu comme une date, la valeur par défaut est rétablie. Je souhaite ajouter une fonctionnalité permettant à la saisie de certains mots-clés dans la zone de date d'exécuter un comportement spécifique. Par exemple, si l'utilisateur saisit « hier », la date/heure sera définie au début de la journée précédente.
Je ne parviens pas à faire en sorte que la fonction vérifie ces mots clés avant de reconvertir le texte à sa valeur par défaut, car il ne s'agit pas d'une date correcte. Auriez-vous des conseils ?
(en utilisant JMP 17, mais idéalement, cela fonctionnerait également avec les versions plus récentes)
timeBox = Function( {time},
Eval(
Substitute(
NameExpr( NumberEditBox(
time,
10, //width
<< SetFunction( Function( {self}, {},
If( IsMissing(self << get), self << Set(Eval(dummy)) );
) ),
<< Set Format( Format( "m/d/y h:m:s", 23, 0 ) );
) ),
Expr( dummy ),
time
)
);
);
timeEntryWindow = NewWindow( << Modal,
PanelBox( "Start Time", startTimeBox = timeBox( Today() - 12*60*60 ) )
);
Comme il s'agit d'une zone d'édition NUMÉRIQUE , elle ne peut accepter que des nombres. Commencez par quelque chose de très simple et testez-le de différentes manières (vous risquez d'obtenir des valeurs manquantes si vous saisissez du texte).
Names Default To Here(1);
nw = new window("",
neb = Number Edit Box(.)
);
neb << Set Function(function({this},
show(this << get)
));
/*
neb << Set Number Changed(function({this, val},
show(this << get);
show(val);
));
*/
Vous pouvez créer une liste déroulante/un bouton pour définir la valeur d'hier OU vous pouvez utiliser une zone d'édition de texte et créer une zone de calendrier personnalisée/une zone d'édition de numéro avec cela.