aboutsummaryrefslogtreecommitdiff
path: root/lib/Extrapolation.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Extrapolation.hs')
-rw-r--r--lib/Extrapolation.hs17
1 files changed, 5 insertions, 12 deletions
diff --git a/lib/Extrapolation.hs b/lib/Extrapolation.hs
index cc77a92..f505e73 100644
--- a/lib/Extrapolation.hs
+++ b/lib/Extrapolation.hs
@@ -7,7 +7,7 @@
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RecordWildCards #-}
-module Extrapolation (Extrapolator(..), LinearExtrapolator, linearDelay, secondsNow, distanceAlongLine) where
+module Extrapolation (Extrapolator(..), LinearExtrapolator, linearDelay, distanceAlongLine) where
import Data.Foldable (maximumBy, minimumBy)
import Data.Function (on)
import Data.List.NonEmpty (NonEmpty)
@@ -23,10 +23,12 @@ import GHC.IO (unsafePerformIO)
import Conduit (MonadIO (liftIO))
import Data.List (sortBy)
import GTFS (Depth (Deep), GTFS (..), Seconds (..),
- Shape (..), Stop (..), Time, Trip (..),
- seconds2Double, stationGeopos, toSeconds, Station (stationName))
+ Shape (..), Station (stationName),
+ Stop (..), Time, Trip (..), seconds2Double,
+ stationGeopos, toSeconds)
import Persist (Running (..), TrainAnchor (..),
TrainPing (..))
+import Server.Util (utcToSeconds)
class Extrapolator a where
-- | here's a position ping, guess things from that!
@@ -123,16 +125,7 @@ distanceAlongLine line p1 p2 = along2 - along1
sumSegments line = snd
$ foldl (\(p,a) p' -> (p', a + euclid p p')) (V.head line,0) $ line
--- | convert utc time to seconds on a day, with wrap-around
--- for trains that cross midnight.
-utcToSeconds :: UTCTime -> Day -> Seconds
-utcToSeconds time day =
- Seconds $ round $ nominalDiffTimeToSeconds $ diffUTCTime time (UTCTime day 0)
-secondsNow :: MonadIO m => Day -> m Seconds
-secondsNow runningDay = do
- now <- liftIO getCurrentTime
- pure $ utcToSeconds now runningDay
euclid :: Floating f => (f,f) -> (f,f) -> f
euclid (x1,y1) (x2,y2) = sqrt (x*x + y*y)