aboutsummaryrefslogtreecommitdiff
path: root/lib/Server/Frontend/Tracker.hs
diff options
context:
space:
mode:
authorstuebinm2026-04-16 01:55:48 +0200
committerstuebinm2026-04-16 01:55:48 +0200
commit8b6c42d832f26bc277e125f876da8d21931550c6 (patch)
treebb4a3de8974663edb153497379f839cd5138a5d6 /lib/Server/Frontend/Tracker.hs
parent2c684868ed9b3011033d5ec265dd9f891fe791b7 (diff)
Server.Frontend.Tracker: add tracker list overviewHEADmain
Diffstat (limited to '')
-rw-r--r--lib/Server/Frontend/Tracker.hs22
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/Server/Frontend/Tracker.hs b/lib/Server/Frontend/Tracker.hs
index 23bbdb9..e3d88ba 100644
--- a/lib/Server/Frontend/Tracker.hs
+++ b/lib/Server/Frontend/Tracker.hs
@@ -1,9 +1,11 @@
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE QuasiQuotes #-}
-module Server.Frontend.Tracker (getTrackerViewR) where
+module Server.Frontend.Tracker (getTrackerViewR, getTrackersR) where
import Data.Coerce (coerce)
+import Data.Function ((&))
import Data.Functor ((<&>))
+import qualified Data.Map as M
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time (getCurrentTime)
@@ -16,6 +18,24 @@ import Yesod hiding (update, (=.), (==.))
import OwnTracks.Status
+
+getTrackersR :: Handler Html
+getTrackersR = do
+ trackers <- runDB $ select do
+ (t :& p) <- from $
+ (table @Tracker) `LeftOuterJoin` (table @Ping)
+ `on` \(t :& p) -> just (t ^. TrackerId) ==. p ?. PingTrackerId
+ pure (t, p)
+ & fmap associateJoin
+
+ defaultLayout [whamlet|
+ <h1> Trackers
+ <section>
+ <ul>
+ $forall (trackerId, (Tracker{..}, status)) <- M.toList trackers
+ <li><a href="@{TrackerViewR trackerName}">#{trackerName}</a>
+ |]
+
getTrackerViewR :: Text -> Handler Html
getTrackerViewR name =
runDB (selectOne do