76 lines
2.0 KiB
Haskell
76 lines
2.0 KiB
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE FlexibleContexts #-}
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE QuasiQuotes #-}
|
|
{-# LANGUAGE RecordWildCards #-}
|
|
{-# LANGUAGE TemplateHaskell #-}
|
|
{-# LANGUAGE TypeFamilies #-}
|
|
|
|
{-# LANGUAGE NoImplicitPrelude #-}
|
|
|
|
module Datarekisteri.Frontend.Handlers.Members where
|
|
|
|
import Relude hiding (id)
|
|
|
|
import Data.Morpheus.Client (raw, declareLocalTypesInline)
|
|
|
|
import Yesod
|
|
import Yesod.Auth
|
|
|
|
import Datarekisteri.Frontend.Types
|
|
import Datarekisteri.Frontend.ApiRequests
|
|
import Datarekisteri.Frontend.Widgets
|
|
import Datarekisteri.Core.Types
|
|
|
|
declareLocalTypesInline "schema.gql" [raw|
|
|
query MembersPage {
|
|
users {
|
|
id
|
|
name
|
|
nickname
|
|
homeplace
|
|
}
|
|
}
|
|
|]
|
|
|
|
instance ToTableRow DataIdClient MembersPageUsers where
|
|
tableHeader _ = toWidget <$> ["Nimi" :: Text, "Kutsumanimi", "Kotipaikka"]
|
|
toCells MembersPageUsers {..} = toWidget <$> [name, nickname, homeplace]
|
|
|
|
getMembersR :: Handler Html
|
|
getMembersR = do
|
|
MembersPage {..} <- apiRequest True ()
|
|
defaultLayout $ do
|
|
setTitle "Jäsenet"
|
|
let memberNickname member = let MembersPageUsers {..} = member in nickname
|
|
memberName member = let MembersPageUsers {..} = member in name
|
|
memberHomeplace member = let MembersPageUsers {..} = member in homeplace
|
|
memberId member = let MembersPageUsers {..} = member in id
|
|
[whamlet|
|
|
<h1>
|
|
Jäsenet
|
|
$if null users
|
|
<p>
|
|
Ei jäseniä.
|
|
$else
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">
|
|
Nimi
|
|
<th scope="col">
|
|
Kutsumanimi
|
|
<th scope="col">
|
|
Kotipaikka
|
|
<tbody>
|
|
$forall member <- users
|
|
<tr>
|
|
<td>
|
|
#{memberName member}
|
|
<td>
|
|
#{memberNickname member}
|
|
<td>
|
|
#{memberHomeplace member}
|
|
|]
|