An Interface for getting a Time.Zone
based on the current UTC offset.
Replacement for elm/time's Time.here.
Intended for package authors.
An Interface for using Intl.DateTimeFormat().resolvedOptions().timeZone
to get names like Europe/Moscow or America/Havana.
From there you can look it up in any IANA data you loaded yourself.
Replacement for elm/time's Time.getZoneName.
An Interface for getting the current time
every time a given Duration has passed.
Note: Do not use it for animations.
Web.Window.animationFrameListen
syncs up with repaints and will end up being much smoother for any moving visuals.
An Interface for getting a reminder
once a given point in time has been reached.
This lets you for example wait until it's 15 minutes before the event, timeout a request or schedule a certain action to a specific time.
import Web
type RequestState result
= NotAsked
| BeforeTimeout { start : Time.Posix }
| TimedOut
| GotResult result
{ initialState = NotAsked
, interface =
\state ->
[ case state of
NotAsked ->
[ Web.Time.posixRequest
|> Web.interfaceFutureMap BeforeTimeout
, ..request.. |> Web.futureMap GotResult
]
BeforeTimeout requestTime ->
-- timeout after 10 seconds
Web.Time.onceAt (Duration.addTo requestTime (Duration.seconds 10))
|> Web.interfaceFutureMap (\_ -> TimedOut)
TimedOut ->
...
GotResult result ->
...
]
}You can abstract this in various ways like adding a
withTimeout :
..Request result..
-> Web.Interface (RequestState result)where the result can be put into the "main state" and therefore cased on.
An
Interfacefor getting the current POSIX time.Replacement for
elm/time'sTime.now.