diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs
index 21b6ea6ee..d00d69ca8 100644
--- a/src/Handler/Home.hs
+++ b/src/Handler/Home.hs
@@ -34,6 +34,8 @@ postHomeR :: Handler Html
postHomeR = do
((infResult,_), _) <- runFormPost $ postButtonForm "Informatik"
((matResult,_), _) <- runFormPost $ postButtonForm "Mathematik"
+ $(logDebug) $ tshow infResult
+ $(logDebug) $ tshow matResult
setMessage "ButtonTest"
case infResult of
(FormSuccess ()) -> setMessage "Informatik anlegen" -- does not work somehow
diff --git a/src/Handler/Term.hs b/src/Handler/Term.hs
index 662596477..e56599863 100644
--- a/src/Handler/Term.hs
+++ b/src/Handler/Term.hs
@@ -1,5 +1,6 @@
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
@@ -14,44 +15,61 @@ import Handler.Utils
import qualified Data.Text as T
import Yesod.Form.Bootstrap3
-import Colonnade
+import Colonnade hiding (bool)
import Yesod.Colonnade
+import qualified Database.Esqueleto as E
getTermShowR :: Handler TypedContent
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
- provideRep $ return $ toJSON terms
+ provideRep $ return $ toJSON $ map fst termData
provideRep $ do
let colonnadeTerms = mconcat
- [ headed "Kürzel" $ (\t -> let tn = termName t in do
- adminLink <- handlerToWidget $ isAuthorized (TermEditExistR tn) False
+ [ headed "Kürzel" $ \(Entity _ Term{..},_) -> do
+ -- Scrap this if to slow, create term edit page instead
+ adminLink <- handlerToWidget $ isAuthorized (TermEditExistR termName) False
[whamlet|
$if adminLink == Authorized
-
- #{termToText tn}
+
+ #{termToText termName}
$else
- #{termToText tn}
- |] )
- , headed "Beginn Vorlesungen" $ fromString.formatTimeGerWD.termLectureStart
- , headed "Ende Vorlesungen" $ fromString.formatTimeGerWD.termLectureEnd
- , headed "Aktiv" (\t -> if termActive t then tickmark else "")
- -- , Colonnade.bool (Headed "Aktiv") termActive (const tickmark) (const "")
- , headed "Kursliste" $ (\t -> let tn = termName t in do
- numCourses <- handlerToWidget $ runDB $ count [CourseTermId ==. TermKey tn ]
+ #{termToText termName}
+ |]
+ , headed "Beginn Vorlesungen" $ \(Entity _ Term{..},_) ->
+ fromString $ formatTimeGerWD termLectureStart
+ , headed "Ende Vorlesungen" $ \(Entity _ Term{..},_) ->
+ fromString $ formatTimeGerWD termLectureEnd
+ , headed "Aktiv" $ \(Entity _ Term{..},_) ->
+ bool "" tickmark termActive
+ , headed "Kursliste" $ \(Entity _ Term{..}, E.Value numCourses) ->
[whamlet|
-
+
#{show numCourses} Kurse
- |] )
- , headed "Semesteranfang" $ fromString.formatTimeGerWD.termStart
- , headed "Semesterende" $ fromString.formatTimeGerWD.termEnd
- , headed "Feiertage im Semester" $
- fromString.(intercalate ", ").(map formatTimeGerWD).termHolidays
+ |]
+ , headed "Semesteranfang" $ \(Entity _ Term{..},_) ->
+ fromString $ formatTimeGerWD termStart
+ , headed "Semesterende" $ \(Entity _ Term{..},_) ->
+ fromString $ formatTimeGerWD termEnd
+ , headed "Feiertage im Semester" $ \(Entity _ Term{..},_) ->
+ fromString $ (intercalate ", ") $ map formatTimeGerWD termHolidays
]
defaultLayout $ do
setTitle "Freigeschaltete Semester"
- encodeHeadedWidgetTable tableDefault colonnadeTerms (map entityVal terms)
+ encodeHeadedWidgetTable tableDefault colonnadeTerms termData
getTermEditR :: Handler Html
diff --git a/templates/home.hamlet b/templates/home.hamlet
index 04114a2a1..68aeb5f1e 100644
--- a/templates/home.hamlet
+++ b/templates/home.hamlet
@@ -65,9 +65,9 @@
Institut einmalig in Datenbank einfügen:
-