Sélectionnez une plage de dates avec des zones de calendrierCette fonction JSL affiche une boîte de dialogue modale contenant deux boîtes de calendrier. Les cases sont liées avec JSL, donc la sélection d'une date minimale dans la case de gauche grise les dates indisponibles dans la case de droite, et similaire pour l'autre sens.
Linked calendar boxesLinked calendar boxesLinked calendar boxesLinked calendar boxesBoîtes de calendrier liées
Le JSL est écrit sous la forme d'une fonction que vous pouvez appeler avec une limite facultative sur la plage de dates (affichée dans la barre de titre).L'appel de fonction renvoie une liste :
{21 août 2019, 26 août 2019}
promptDateRange = Function( {minAllowed = 1jan1001, maxAllowed = 31dec2999},
{roundMidnight, result, startDate, endDate}, // local variables
roundMidnight = Function( {datetime}, // return the date, without the time...which is midnight at the start of a day
As Date( Date MDY( Month( datetime ), Day( datetime ), Year( datetime ) ) )
);
minAllowed = roundMidnight( minAllowed );
maxAllowed = roundMidnight( maxAllowed );
result = New Window( "Select date range between " || Char( minAllowed ) || " and " || Char( maxAllowed ),
modal, // modal: the window must be closed before JMP can continue
// do the validation in OnValidate, NOT OnClose! Doing it in OnClose will prevent canceling, which is Bad!
<<ONVALIDATE> (startDate << getMaxDate),
startDate << date( startDate << getMaxDate )
);
)
)
),
H Center Box( Text Box( "end", <<SETFONTSIZE></SETFONTSIZE></ONVALIDATE>Ce JSL désactive l'affichage de l'heure dans le contrôle du calendrier et supprime toutes les secondes après minuit chaque fois qu'elles apparaissent. Le JSL définit également une plage de dates valide pour les contrôles gauche et droit ; la sélection d'une date dans le contrôle de gauche modifie la date minimale dans le contrôle de droite, et similaire dans l'autre sens. Les boutons d'aujourd'hui sont également supprimés. Si vous essayez de modifier ce JSL pour prendre en charge l'heure, vous découvrirez que les boutons d'aujourd'hui n'effectuent pas de rappel et que l'heure qu'ils sélectionnent n'est pas arrondie à minuit comme les valeurs de date minimale et maximale.
Voir également
https://www.jmp.com/support/help/14-2/date-time-functions.shtml

Sélectionnez une plage de dates avec une paire de boîtes de calendrier.
Re : Sélectionner une plage de dates avec des boîtes de calendrierMerci @Craige_Hales pour vos réponses.
cordialement
Re : Sélectionner une plage de dates avec des boîtes de calendrierMerci @Craige_Hales pour avoir signalé le problème avec les icônes de calendrier dans le filtre.L'icône doit apparaître à chaque fois que vous survolez le texte numérique, vous donnant la possibilité de choisir entre l'édition textuelle ou l'édition du calendrier.Ce problème a été corrigé pour une prochaine version.Comme vous l'avez souligné, les calendriers fonctionnent toujours dans la version actuelle, mais dans certains cas, l'icône du calendrier n'affiche pas pour faire allusion à la fonctionnalité.
Re : Sélectionner une plage de dates avec des boîtes de calendrierEssayez quelque chose comme ceci si vous voulez créer le vôtre. En plus d'appeler une fonction que vous fournissez, je lui ai également fait initialiser les deux dates du calendrier à la plage, plutôt qu'à aujourd'hui, ce qui semble plus utile. Vous pouvez intégrer les calendriers au rapport au lieu de la fenêtre modale.
Comme écrit ci-dessous, vous pouvez voir comment définir la plage (...) masque et exclut simplement les données que vous ne souhaitez pas voir. Il n'est pas intégré au filtre de données local, mais fonctionne de manière similaire.
dt = New Table( "Untitled 3",
Add Rows( 367 ),
New Column( "date", Numeric, "Continuous", Format( "ddMonyyyy", 10 ), Input Format( "ddMonyyyy" ), Formula( 01Jan2020 + In Days( Row() - 1 ) ) ),
New Column( "value", Numeric, "Continuous", Format( "Best", 12 ), Formula( Random Uniform() ) )
);
gb = dt << Graph Builder(
Size( 531, 456 ),
Show Control Panel( 0 ),
Variables( X( :date ), Y( :value ) ),
Elements( Points( X, Y, Legend( 3 ) ), Line Of Fit( X, Y, Legend( 5 ) ) )
);
wait(0);
setrange=function({low,high},
dt<<SELECT hidden=""> (startDate << getMaxDate),
startDate << date( startDate << getMaxDate )
);
setrange(roundMidnight( startDate << getDate ),roundMidnight( endDate << getDate )); // callback added
)
)
),
H Center Box( Text Box( "end", <<SETFONTSIZE></SETFONTSIZE></SELECT>Re : Sélectionner une plage de dates avec des boîtes de calendrierdommage, je pensais pouvoir utiliser les cases du calendrier comme filtre au lieu d'avoir un filtre pour chaque type de durée (mois, semaine, année,..).
merci pour votre réponse.
tous mes vœux !
Re : Sélectionner une plage de dates avec des boîtes de calendrierJe ne pense pas. Les sélecteurs définis par l'utilisateur peuvent être une demande de fonctionnalité.
Vous devriez pouvoir obtenir le curseur de plage, mais il ne donnera pas une précision sur un seul jour sur une large plage de dates.
drag the two selector controlsdrag the two selector controlsdrag the two selector controlsdrag the two selector controlsfaites glisser les deux contrôles de sélection
Les calendriers sont déjà là, un à la fois, et très difficiles à découvrir. Si vous survolez la ligne bleue, l'icône indique parfois l'endroit où vous devez cliquer. Lorsque vous cliquez sur l'icône, elle disparaît, mais vous pouvez toujours cliquer là où elle est apparue ! Le curseur se transforme également en doigt pointé lorsque vous le déplacez sur la partie gauche de la date. (JMP 15. 16 est peut-être meilleur.) @XanGregg @danschikore @Audrey_Shull
Re : Sélectionner une plage de dates avec des boîtes de calendrierSalut,
Je souhaite utiliser ce script pour remplacer un filtre de données local appliqué à un graphique.
le filtre de données locales a 3 choix : année, mois et date.
avec 2 calendriers, ce sera plus simple.
est-il possible de l'inclure dans un filtre de données local ?
cordialement