diff --git a/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg b/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg index 3d083e6e7..9087f1ca0 100644 --- a/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg +++ b/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg @@ -66,6 +66,7 @@ BreadcrumbFaq !ident-ok: FAQ BreadcrumbSheetPersonalisedFiles: Personalisierte Dateien herunterladen BreadcrumbCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen BreadcrumbAdminCrontab !ident-ok: Crontab +BreadcrumbAdminJobs !ident-ok: Jobs BreadcrumbError: Fehler BreadcrumbUpload !ident-ok: Upload BreadcrumbUserAdd: Benutzer:in anlegen diff --git a/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg b/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg index deadd76e7..5763051d1 100644 --- a/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg +++ b/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg @@ -66,6 +66,7 @@ BreadcrumbFaq: FAQ BreadcrumbSheetPersonalisedFiles: Download personalised sheet files BreadcrumbCourseSheetPersonalisedFiles: Download template for personalised sheet files BreadcrumbAdminCrontab: Crontab +BreadcrumbAdminJobs !ident-ok: Jobs BreadcrumbError: Error BreadcrumbUpload: Upload BreadcrumbUserAdd: Add user diff --git a/messages/uniworx/utils/navigation/menu/de-de-formal.msg b/messages/uniworx/utils/navigation/menu/de-de-formal.msg index abc748e02..ff8043db6 100644 --- a/messages/uniworx/utils/navigation/menu/de-de-formal.msg +++ b/messages/uniworx/utils/navigation/menu/de-de-formal.msg @@ -107,6 +107,7 @@ MenuFaq !ident-ok: FAQ MenuSheetPersonalisedFiles: Personalisierte Dateien herunterladen MenuCourseSheetPersonalisedFiles: Vorlage für personalisierte Übungsblatt-Dateien herunterladen MenuAdminCrontab !ident-ok: Crontab +MenuAdminJobs: Job Warteschlange MenuGlossary: Begriffsverzeichnis MenuVersion: Versionsgeschichte MenuCourseNewsNew: Neue Kursartnachricht diff --git a/messages/uniworx/utils/navigation/menu/en-eu.msg b/messages/uniworx/utils/navigation/menu/en-eu.msg index 81ca762a8..7dc653c6a 100644 --- a/messages/uniworx/utils/navigation/menu/en-eu.msg +++ b/messages/uniworx/utils/navigation/menu/en-eu.msg @@ -108,6 +108,7 @@ MenuFaq: FAQ MenuSheetPersonalisedFiles: Download personalised sheet files MenuCourseSheetPersonalisedFiles: Download template for personalised sheet files MenuAdminCrontab: Crontab +MenuAdminJobs: Job queue MenuGlossary: Glossary MenuVersion: Version history MenuCourseNewsNew: Add course type news diff --git a/messages/uniworx/utils/table_column/de-de-formal.msg b/messages/uniworx/utils/table_column/de-de-formal.msg index b9e575dda..18757a352 100644 --- a/messages/uniworx/utils/table_column/de-de-formal.msg +++ b/messages/uniworx/utils/table_column/de-de-formal.msg @@ -78,3 +78,5 @@ TableCompany: Firma TableCompanies: Firmen TableCompanyNos: Firmennummern TableSupervisor: Ansprechpartner +TableCreationTime: Erstellungszeit +TableJobContent !ident-ok: Job diff --git a/messages/uniworx/utils/table_column/en-eu.msg b/messages/uniworx/utils/table_column/en-eu.msg index 5187d80dc..1bfa7cdb7 100644 --- a/messages/uniworx/utils/table_column/en-eu.msg +++ b/messages/uniworx/utils/table_column/en-eu.msg @@ -78,3 +78,5 @@ TableCompany: Company TableCompanies: Companies TableCompanyNos: Company numbers TableSupervisor: Supervisor +TableCreationTime: Creation +TableJobContent: Job \ No newline at end of file diff --git a/routes b/routes index 32721396e..7a80c2012 100644 --- a/routes +++ b/routes @@ -66,6 +66,7 @@ /admin/errMsg AdminErrMsgR GET POST /admin/tokens AdminTokensR GET POST /admin/crontab AdminCrontabR GET +/admin/crontab/jobs AdminJobsR GET POST /admin/avs AdminAvsR GET POST /admin/avs/#CryptoUUIDUser AdminAvsUserR GET /admin/ldap AdminLdapR GET POST diff --git a/src/Foundation/Navigation.hs b/src/Foundation/Navigation.hs index 5f91b778b..8a4dcbddd 100644 --- a/src/Foundation/Navigation.hs +++ b/src/Foundation/Navigation.hs @@ -112,6 +112,7 @@ breadcrumb AdminTestPdfR = i18nCrumb MsgMenuAdminTest $ Just breadcrumb AdminErrMsgR = i18nCrumb MsgMenuAdminErrMsg $ Just AdminR breadcrumb AdminTokensR = i18nCrumb MsgMenuAdminTokens $ Just AdminR breadcrumb AdminCrontabR = i18nCrumb MsgBreadcrumbAdminCrontab $ Just AdminR +breadcrumb AdminJobsR = i18nCrumb MsgBreadcrumbAdminJobs $ Just AdminCrontabR breadcrumb AdminAvsR = i18nCrumb MsgMenuAvs $ Just AdminR breadcrumb AdminAvsUserR{} = i18nCrumb MsgAvsPersonInfo $ Just AdminAvsR breadcrumb AdminLdapR = i18nCrumb MsgMenuLdap $ Just AdminR @@ -2396,6 +2397,13 @@ pageActions PrintCenterR = do dayLinks <- mapM toDayAck $ Map.toAscList dayMap return $ manualSend : take 9 dayLinks +pageActions AdminCrontabR = return + [ NavPageActionPrimary + { navLink = defNavLink MsgMenuAdminJobs AdminJobsR + , navChildren = [] + } + ] + pageActions _ = return [] submissionList :: ( MonadIO m diff --git a/src/Handler/Admin/Crontab.hs b/src/Handler/Admin/Crontab.hs index 12f4349de..e0232c3fe 100644 --- a/src/Handler/Admin/Crontab.hs +++ b/src/Handler/Admin/Crontab.hs @@ -6,23 +6,31 @@ module Handler.Admin.Crontab ( getAdminCrontabR + , getAdminJobsR + , postAdminJobsR ) where import Import import Jobs -import Handler.Utils.DateTime +import Handler.Utils import qualified Data.Aeson.Encode.Pretty as Pretty import Data.Aeson.Encode.Pretty (encodePrettyToTextBuilder') +-- import qualified Data.CaseInsensitive as CI import qualified Data.Text as Text import qualified Data.Text.Lazy.Builder as Text.Builder +import qualified Data.Map as Map import qualified Data.HashSet as HashSet import qualified Data.HashMap.Strict as HashMap import qualified Data.UUID as UUID +import qualified Database.Esqueleto.Legacy as E +-- import qualified Database.Esqueleto.Utils as E +-- import Database.Esqueleto.Utils.TH + deriveJSON defaultOptions { constructorTagModifier = camelToPathPiece' 1 @@ -96,3 +104,43 @@ getAdminCrontabR = do , Text.splitOn "-" t ) } + + +getAdminJobsR, postAdminJobsR :: Handler Html +getAdminJobsR = postAdminJobsR +postAdminJobsR = do + let + jobsDBTable = DBTable{..} + where + resultJob :: Lens' (DBRow (Entity QueuedJob)) (Entity QueuedJob) + resultJob = _dbrOutput + + dbtSQLQuery = return + dbtRowKey = (E.^. QueuedJobId) + dbtProj = dbtProjId + dbtColonnade = dbColonnade $ mconcat -- remove call to dbColonnade if table actions are added + [ sortable (Just "creation-time") (i18nCell MsgTableCreationTime) $ \(view $ resultJob . _entityVal -> QueuedJob{..}) -> dateTimeCell queuedJobCreationTime + , sortable (Just "content") (i18nCell MsgTableCreationTime) $ \(view $ resultJob . _entityVal -> QueuedJob{..}) -> stringCell $ show queuedJobContent + ] + dbtSorting = Map.fromList + [ ("creation-time", SortColumnNullsInv (E.^. QueuedJobCreationTime)) + , ("content" , SortColumn (E.^. QueuedJobContent)) + ] + dbtFilter = Map.empty + dbtFilterUI = const mempty + dbtStyle = def + dbtParams = def + dbtIdent :: Text + dbtIdent = "queued-jobs" + dbtCsvEncode = noCsvEncode + dbtCsvDecode = Nothing + dbtExtraReps = [] + jobsDBTableValidator = def + & defaultSorting [SortDescBy "creation-time"] + ((), jobsTable) <- runDB $ dbTable jobsDBTableValidator jobsDBTable + + siteLayoutMsg MsgMenuAdminJobs $ do + setTitleI MsgMenuAdminJobs + [whamlet| + ^{jobsTable} + |] \ No newline at end of file