{-# LANGUAGE NoImplicitPrelude , OverloadedStrings , OverloadedLists , RecordWildCards , TemplateHaskell , QuasiQuotes , MultiParamTypeClasses , TypeFamilies , FlexibleContexts , PartialTypeSignatures #-} module Handler.Term where import Import import Handler.Utils -- import qualified Data.Text as T import Yesod.Form.Bootstrap3 import Colonnade hiding (bool) import qualified Database.Esqueleto as E getTermShowR :: Handler TypedContent getTermShowR = do -- terms <- runDB $ selectList [] [Desc TermStart] ------- ÄQUIVALENT: -- term <- runDB $ E.select . E.from $ \(term) -> do -- E.orderBy [E.desc $ term E.^. TermStart ] -- return term -- let termData :: E.SqlExpr (Entity Term) -> E.SqlQuery (E.SqlExpr (Entity Term), E.SqlExpr (E.Value Int64)) termData term = do -- E.orderBy [E.desc $ term E.^. TermStart ] let courseCount = E.sub_select . E.from $ \course -> do E.where_ $ term E.^. TermId E.==. course E.^. CourseTerm return E.countRows return (term, courseCount) selectRep $ do provideRep $ toJSON . map fst <$> runDB (E.select $ E.from termData) provideRep $ do let colonnadeTerms = widgetColonnade $ mconcat [ sortable Nothing "Kürzel" $ anchorCell' (\(Entity tid _, _) -> TermCourseListR tid) (\(Entity tid _, _) -> [whamlet|#{toPathPiece tid}|]) , sortable (Just "lecture-start") (i18nCell MsgLectureStart) $ \(Entity _ Term{..},_) -> cell $ formatTime SelFormatDate termLectureStart >>= toWidget , sortable (Just "lecture-end") "Ende Vorlesungen" $ \(Entity _ Term{..},_) -> cell $ formatTime SelFormatDate termLectureEnd >>= toWidget , sortable Nothing "Aktiv" $ \(Entity _ Term{..},_) -> textCell $ (bool "" tickmark termActive :: Text) , sortable Nothing "Kurse" $ \(_, E.Value numCourses) -> cell [whamlet|_{MsgNumCourses numCourses}|] , sortable (Just "start") "Semesteranfang" $ \(Entity _ Term{..},_) -> cell $ formatTime SelFormatDate termStart >>= toWidget , sortable (Just "end") "Semesterende" $ \(Entity _ Term{..},_) -> cell $ formatTime SelFormatDate termEnd >>= toWidget , sortable Nothing "Feiertage im Semester" $ \(Entity _ Term{..},_) -> cell $ do termHolidays' <- mapM (formatTime SelFormatDate) termHolidays [whamlet|