aboutsummaryrefslogtreecommitdiff
path: root/lib/Server/ControlRoom.hs
blob: edfdeb38fe55b565e1197fd2327cee751524e1e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
{-# LANGUAGE DataKinds           #-}
{-# LANGUAGE DefaultSignatures   #-}
{-# LANGUAGE DeriveGeneric       #-}
{-# LANGUAGE FlexibleContexts    #-}
{-# LANGUAGE FlexibleInstances   #-}
{-# LANGUAGE LambdaCase          #-}
{-# LANGUAGE OverloadedStrings   #-}
{-# LANGUAGE RecordWildCards     #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications    #-}
{-# LANGUAGE TypeOperators       #-}

module Server.ControlRoom where

import           Control.Monad.IO.Class      (MonadIO (liftIO))
import           Data.Swagger                (ToSchema (..))
import           Data.Text                   (Text)
import qualified Data.Text                   as T
import           Lucid                       (Html, ToHtml (toHtml), action_,
                                              div_, for_, form_, id_, input_,
                                              label_, method_, name_,
                                              placeholder_, type_, value_)
import           Servant                     (Capture, FormUrlEncoded, Get,
                                              JSON, NoContent, PlainText, Post,
                                              QueryParam, ReqBody,
                                              type (:<|>) (..), type (:>))
import           Servant.HTML.Lucid          (HTML)
import           Web.FormUrlEncoded          (ToForm)
import           Web.Internal.FormUrlEncoded (Form)

import           GTFS                        (CalendarDate,
                                              CalendarExceptionType, TripID)
import           Lucid.Forms                 (ToHtmlForm (..),
                                              ToHtmlFormInput (..))
import           Server.Util                 (Service)

data TripList = TripList
  { tripListHeader :: Text
  , tripListType   :: Text
  , tripListTrips  :: [TripID]
  }

type ControlRoomAPI =
  Get '[HTML] TripList
  :<|> "irgendwo" :> ReqBody '[FormUrlEncoded] CalendarDate :> Post '[PlainText] Text

controlRoomServer :: Service ControlRoomAPI
controlRoomServer =
  (pure (TripList "hallo" "welt" []))
  :<|> (\text -> do
           liftIO $ putStrLn (show text)
           pure "hello"
       )


instance ToHtmlFormInput CalendarExceptionType
instance ToHtmlForm CalendarDate

instance ToHtml TripList where
  toHtml _ = div_ "todo"