Esqueleto for Term Overview
This commit is contained in:
parent
0cd0425903
commit
772a5ee02c
@ -34,6 +34,8 @@ postHomeR :: Handler Html
|
|||||||
postHomeR = do
|
postHomeR = do
|
||||||
((infResult,_), _) <- runFormPost $ postButtonForm "Informatik"
|
((infResult,_), _) <- runFormPost $ postButtonForm "Informatik"
|
||||||
((matResult,_), _) <- runFormPost $ postButtonForm "Mathematik"
|
((matResult,_), _) <- runFormPost $ postButtonForm "Mathematik"
|
||||||
|
$(logDebug) $ tshow infResult
|
||||||
|
$(logDebug) $ tshow matResult
|
||||||
setMessage "ButtonTest"
|
setMessage "ButtonTest"
|
||||||
case infResult of
|
case infResult of
|
||||||
(FormSuccess ()) -> setMessage "Informatik anlegen" -- does not work somehow
|
(FormSuccess ()) -> setMessage "Informatik anlegen" -- does not work somehow
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
{-# LANGUAGE NoImplicitPrelude #-}
|
{-# LANGUAGE NoImplicitPrelude #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE RecordWildCards #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
{-# LANGUAGE QuasiQuotes #-}
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
{-# LANGUAGE MultiParamTypeClasses #-}
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
@ -14,44 +15,61 @@ import Handler.Utils
|
|||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Yesod.Form.Bootstrap3
|
import Yesod.Form.Bootstrap3
|
||||||
|
|
||||||
import Colonnade
|
import Colonnade hiding (bool)
|
||||||
import Yesod.Colonnade
|
import Yesod.Colonnade
|
||||||
|
|
||||||
|
import qualified Database.Esqueleto as E
|
||||||
|
|
||||||
getTermShowR :: Handler TypedContent
|
getTermShowR :: Handler TypedContent
|
||||||
getTermShowR = do
|
getTermShowR = do
|
||||||
terms <- runDB $ selectList [] [Desc TermStart]
|
-- terms <- runDB $ selectList [] [Desc TermStart]
|
||||||
|
------- ÄQUIVALENT:
|
||||||
|
-- term <- runDB $ E.select . E.from $ \(term) -> do
|
||||||
|
-- E.orderBy [E.desc $ term E.^. TermStart ]
|
||||||
|
-- return term
|
||||||
|
--
|
||||||
|
termData <- runDB $ E.select . E.from $ \term -> do
|
||||||
|
E.orderBy [E.desc $ term E.^. TermStart ]
|
||||||
|
let courseCount :: E.SqlExpr (E.Value Int)
|
||||||
|
courseCount = E.sub_select . E.from $ \course -> do
|
||||||
|
E.where_ $ term E.^. TermId E.==. course E.^. CourseTermId
|
||||||
|
return E.countRows
|
||||||
|
return (term, courseCount)
|
||||||
selectRep $ do
|
selectRep $ do
|
||||||
provideRep $ return $ toJSON terms
|
provideRep $ return $ toJSON $ map fst termData
|
||||||
provideRep $ do
|
provideRep $ do
|
||||||
let colonnadeTerms = mconcat
|
let colonnadeTerms = mconcat
|
||||||
[ headed "Kürzel" $ (\t -> let tn = termName t in do
|
[ headed "Kürzel" $ \(Entity _ Term{..},_) -> do
|
||||||
adminLink <- handlerToWidget $ isAuthorized (TermEditExistR tn) False
|
-- Scrap this if to slow, create term edit page instead
|
||||||
|
adminLink <- handlerToWidget $ isAuthorized (TermEditExistR termName) False
|
||||||
[whamlet|
|
[whamlet|
|
||||||
$if adminLink == Authorized
|
$if adminLink == Authorized
|
||||||
<a href=@{TermEditExistR tn}>
|
<a href=@{TermEditExistR termName}>
|
||||||
#{termToText tn}
|
#{termToText termName}
|
||||||
$else
|
$else
|
||||||
#{termToText tn}
|
#{termToText termName}
|
||||||
|] )
|
|]
|
||||||
, headed "Beginn Vorlesungen" $ fromString.formatTimeGerWD.termLectureStart
|
, headed "Beginn Vorlesungen" $ \(Entity _ Term{..},_) ->
|
||||||
, headed "Ende Vorlesungen" $ fromString.formatTimeGerWD.termLectureEnd
|
fromString $ formatTimeGerWD termLectureStart
|
||||||
, headed "Aktiv" (\t -> if termActive t then tickmark else "")
|
, headed "Ende Vorlesungen" $ \(Entity _ Term{..},_) ->
|
||||||
-- , Colonnade.bool (Headed "Aktiv") termActive (const tickmark) (const "")
|
fromString $ formatTimeGerWD termLectureEnd
|
||||||
, headed "Kursliste" $ (\t -> let tn = termName t in do
|
, headed "Aktiv" $ \(Entity _ Term{..},_) ->
|
||||||
numCourses <- handlerToWidget $ runDB $ count [CourseTermId ==. TermKey tn ]
|
bool "" tickmark termActive
|
||||||
|
, headed "Kursliste" $ \(Entity _ Term{..}, E.Value numCourses) ->
|
||||||
[whamlet|
|
[whamlet|
|
||||||
<a href=@{CourseListTermR tn}>
|
<a href=@{CourseListTermR termName}>
|
||||||
#{show numCourses} Kurse
|
#{show numCourses} Kurse
|
||||||
|] )
|
|]
|
||||||
, headed "Semesteranfang" $ fromString.formatTimeGerWD.termStart
|
, headed "Semesteranfang" $ \(Entity _ Term{..},_) ->
|
||||||
, headed "Semesterende" $ fromString.formatTimeGerWD.termEnd
|
fromString $ formatTimeGerWD termStart
|
||||||
, headed "Feiertage im Semester" $
|
, headed "Semesterende" $ \(Entity _ Term{..},_) ->
|
||||||
fromString.(intercalate ", ").(map formatTimeGerWD).termHolidays
|
fromString $ formatTimeGerWD termEnd
|
||||||
|
, headed "Feiertage im Semester" $ \(Entity _ Term{..},_) ->
|
||||||
|
fromString $ (intercalate ", ") $ map formatTimeGerWD termHolidays
|
||||||
]
|
]
|
||||||
defaultLayout $ do
|
defaultLayout $ do
|
||||||
setTitle "Freigeschaltete Semester"
|
setTitle "Freigeschaltete Semester"
|
||||||
encodeHeadedWidgetTable tableDefault colonnadeTerms (map entityVal terms)
|
encodeHeadedWidgetTable tableDefault colonnadeTerms termData
|
||||||
|
|
||||||
|
|
||||||
getTermEditR :: Handler Html
|
getTermEditR :: Handler Html
|
||||||
|
|||||||
@ -65,9 +65,9 @@
|
|||||||
|
|
||||||
<li .list-group-item>
|
<li .list-group-item>
|
||||||
Institut einmalig in Datenbank einfügen:
|
Institut einmalig in Datenbank einfügen:
|
||||||
<form .form-inline method=post action=@{HomeR} enctype=#{crInfEnctype}>
|
<form .form-inline method=post action=@{HomeR} enctype=#{crInfEnctype}>
|
||||||
^{crInfWdgt}
|
^{crInfWdgt}
|
||||||
<form .form-inline method=post action=@{HomeR} enctype=#{crMatEnctype}>
|
<form .form-inline method=post action=@{HomeR} enctype=#{crMatEnctype}>
|
||||||
^{crMatWdgt}
|
^{crMatWdgt}
|
||||||
|
|
||||||
<li .list-group-item>
|
<li .list-group-item>
|
||||||
|
|||||||
Reference in New Issue
Block a user