chore(lms): add csv export to overview table (wip)
This commit is contained in:
parent
34cc6354d2
commit
1a67063ec3
@ -12,7 +12,7 @@ TableQualificationCountTotal: Gesamt
|
|||||||
TableQualificationValidUntil: Gültig bis
|
TableQualificationValidUntil: Gültig bis
|
||||||
TableQualificationLastRefresh: Zuletzt erneuert
|
TableQualificationLastRefresh: Zuletzt erneuert
|
||||||
TableQualificationFirstHeld: Erstmalig
|
TableQualificationFirstHeld: Erstmalig
|
||||||
TableLmsUser: Prüfling
|
TableLmsUser: Ermächtigter
|
||||||
TableLmsIdent: Identifikation
|
TableLmsIdent: Identifikation
|
||||||
TableLmsElearning: E-Lernen
|
TableLmsElearning: E-Lernen
|
||||||
TableLmsPin: E-Lernen Pin
|
TableLmsPin: E-Lernen Pin
|
||||||
|
|||||||
@ -12,7 +12,7 @@ TableQualificationCountTotal: Total
|
|||||||
TableQualificationValidUntil: Valid until
|
TableQualificationValidUntil: Valid until
|
||||||
TableQualificationLastRefresh: Last renewed
|
TableQualificationLastRefresh: Last renewed
|
||||||
TableQualificationFirstHeld: First held
|
TableQualificationFirstHeld: First held
|
||||||
TableLmsUser: Examinee
|
TableLmsUser: Licensee
|
||||||
TableLmsIdent: Identifier
|
TableLmsIdent: Identifier
|
||||||
TableLmsPin: E-learning pin
|
TableLmsPin: E-learning pin
|
||||||
TableLmsElearning: E-learning
|
TableLmsElearning: E-learning
|
||||||
@ -21,7 +21,7 @@ TableLmsDatePin: Pin created
|
|||||||
TableLmsDelete: Delete?
|
TableLmsDelete: Delete?
|
||||||
TableLmsStaff: Staff?
|
TableLmsStaff: Staff?
|
||||||
TableLmsStarted: Started
|
TableLmsStarted: Started
|
||||||
TableLmsReceived: Last received
|
TableLmsReceived: Last update
|
||||||
TableLmsEnded: Ended
|
TableLmsEnded: Ended
|
||||||
TableLmsStatus: Status e-learning
|
TableLmsStatus: Status e-learning
|
||||||
TableLmsSuccess: Completed
|
TableLmsSuccess: Completed
|
||||||
|
|||||||
@ -25,8 +25,8 @@ import Handler.Utils.LMS
|
|||||||
|
|
||||||
import qualified Data.Set as Set
|
import qualified Data.Set as Set
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
-- import qualified Data.Csv as Csv
|
import qualified Data.Csv as Csv
|
||||||
-- import qualified Data.Conduit.List as C
|
import qualified Data.Conduit.List as C
|
||||||
import qualified Database.Esqueleto.Experimental as Ex -- needs TypeApplications Lang-Pragma
|
import qualified Database.Esqueleto.Experimental as Ex -- needs TypeApplications Lang-Pragma
|
||||||
import qualified Database.Esqueleto.Legacy as E
|
import qualified Database.Esqueleto.Legacy as E
|
||||||
import qualified Database.Esqueleto.Utils as E
|
import qualified Database.Esqueleto.Utils as E
|
||||||
@ -168,6 +168,58 @@ getLmsEditR = postLmsEditR
|
|||||||
postLmsEditR = error "TODO"
|
postLmsEditR = error "TODO"
|
||||||
|
|
||||||
|
|
||||||
|
data LmsTableCsv = LmsTableCsv -- L..T..C.. -> ltc..
|
||||||
|
{ ltcDisplayName :: UserDisplayName
|
||||||
|
, ltcEmail :: UserEmail
|
||||||
|
, ltcValidUntil :: Day
|
||||||
|
, ltcLastRefresh :: Day
|
||||||
|
, ltcFirstHeld :: Day
|
||||||
|
, ltcLmsIdent :: Maybe LmsIdent
|
||||||
|
, ltcLmsStatus :: Maybe LmsStatus
|
||||||
|
, ltcLmsStarted :: Maybe UTCTime
|
||||||
|
, ltcLmsDatePin :: Maybe UTCTime
|
||||||
|
, ltcLmsReceived :: Maybe UTCTime
|
||||||
|
, ltcLmsEnded :: Maybe UTCTime
|
||||||
|
}
|
||||||
|
deriving Generic
|
||||||
|
|
||||||
|
makeLenses_ ''LmsTableCsv
|
||||||
|
|
||||||
|
lmsTableCsvHeaderList :: [ByteString]
|
||||||
|
lmsTableCsvHeaderList =
|
||||||
|
[ "licensee"
|
||||||
|
, "email"
|
||||||
|
, "valid-until"
|
||||||
|
, "last-renewed"
|
||||||
|
, "first-held"
|
||||||
|
, "e-learn-ident"
|
||||||
|
, "e-learn-status"
|
||||||
|
, "e-learn-started"
|
||||||
|
, "e-learn-pin-created"
|
||||||
|
, "e-learn-last-update"
|
||||||
|
, "e-learn-ended"
|
||||||
|
]
|
||||||
|
|
||||||
|
lmsTableCsvHeader :: Csv.Header
|
||||||
|
lmsTableCsvHeader = Csv.header lmsTableCsvHeaderList
|
||||||
|
|
||||||
|
instance Csv.ToNamedRecord LmsTableCsv where
|
||||||
|
toNamedRecord LmsTableCsv{..} = Csv.namedRecord $ zipWith lmsTableCsvHeaderList lmsTableFields Csv.namedField
|
||||||
|
where lmsTableFields =
|
||||||
|
[ ltcDisplayName
|
||||||
|
, ltcEmail
|
||||||
|
, ltcValidUntil
|
||||||
|
, ltcLastRefresh
|
||||||
|
, ltcFirstHeld
|
||||||
|
, ltcLmsIdent
|
||||||
|
, ltcLmsStatus
|
||||||
|
, ltcLmsStarted
|
||||||
|
, ltcLmsDatePin
|
||||||
|
, ltcLmsReceived
|
||||||
|
, ltcLmsEnded
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
type LmsTableExpr = ( E.SqlExpr (Entity QualificationUser)
|
type LmsTableExpr = ( E.SqlExpr (Entity QualificationUser)
|
||||||
`E.InnerJoin` E.SqlExpr (Entity User)
|
`E.InnerJoin` E.SqlExpr (Entity User)
|
||||||
) `E.LeftOuterJoin` E.SqlExpr (Maybe (Entity LmsUser))
|
) `E.LeftOuterJoin` E.SqlExpr (Maybe (Entity LmsUser))
|
||||||
@ -294,7 +346,35 @@ mkLmsTable (Entity qid quali) acts restrict cols psValidator = do
|
|||||||
dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout }
|
dbtStyle = def { dbsFilterLayout = defaultDBSFilterLayout }
|
||||||
dbtIdent :: Text
|
dbtIdent :: Text
|
||||||
dbtIdent = "qualification"
|
dbtIdent = "qualification"
|
||||||
dbtCsvEncode = noCsvEncode
|
dbtCsvEncode = Just DBTCsvEncode
|
||||||
|
{ dbtCsvExportForm = pure ()
|
||||||
|
, dbtCsvDoEncode = \() -> C.map (doEncode' . view _2)
|
||||||
|
, dbtCsvName
|
||||||
|
, dbtCsvSheetName
|
||||||
|
, dbtCsvNoExportData = Just id
|
||||||
|
, dbtCsvHeader = const $ return lmsTableCsvHeader
|
||||||
|
, dbtCsvExampleData = Nothing -- TODO
|
||||||
|
{-
|
||||||
|
Just
|
||||||
|
[ LmsTableCsv{csvLRTident = LmsIdent lid, csvLRTsuccess = LmsDay $ addDays (-dos) now_day }
|
||||||
|
| (lid,dos) <- zip ["abcdefgh", "12345678", "ident8ch"] [1..]
|
||||||
|
]
|
||||||
|
-}
|
||||||
|
}
|
||||||
|
where
|
||||||
|
doEncode' = LmsTableCsv
|
||||||
|
<$> view (resultUser . _entityVal . _userDisplayName)
|
||||||
|
<*> view (resultUser . _entityVal . _userEmail)
|
||||||
|
<*> view (resultQualUser . _entityVal . _qualificationUserValidUntil)
|
||||||
|
<*> view (resultQualUser . _entityVal . _qualificationUserLastRefresh)
|
||||||
|
<*> view (resultQualUser . _entityVal . _qualificationUserFirstHeld)
|
||||||
|
<*> preview (resultLmsUser . _entityVal . _lmsUserIdent)
|
||||||
|
<*> preview (resultLmsUser . _entityVal . _lmsUserStatus)
|
||||||
|
<*> preview (resultLmsUser . _entityVal . _lmsUserStarted)
|
||||||
|
<*> preview (resultLmsUser . _entityVal . _lmsUserDatePin)
|
||||||
|
<*> preview (resultLmsUser . _entityVal . _lmsUserReceived)
|
||||||
|
<*> preview (resultLmsUser . _entityVal . _lmsUserEnded)
|
||||||
|
|
||||||
dbtCsvDecode = Nothing
|
dbtCsvDecode = Nothing
|
||||||
dbtExtraReps = []
|
dbtExtraReps = []
|
||||||
dbtParams = DBParamsForm
|
dbtParams = DBParamsForm
|
||||||
|
|||||||
@ -63,10 +63,10 @@ makePDF wopts doc = do
|
|||||||
bs2pandocError = over _Left (P.PandocMakePDFError . decodeUtf8 . LBS.toStrict)
|
bs2pandocError = over _Left (P.PandocMakePDFError . decodeUtf8 . LBS.toStrict)
|
||||||
|
|
||||||
_Meta :: Lens' P.Pandoc P.Meta
|
_Meta :: Lens' P.Pandoc P.Meta
|
||||||
_Meta = lens mg mp
|
_Meta = lens mget mput
|
||||||
where
|
where
|
||||||
mg (P.Pandoc m _) = m
|
mget (P.Pandoc m _) = m
|
||||||
mp (P.Pandoc _ b) m = P.Pandoc m b
|
mput (P.Pandoc _ b) m = P.Pandoc m b
|
||||||
|
|
||||||
-- | Modify the Meta-Block of Pandoc
|
-- | Modify the Meta-Block of Pandoc
|
||||||
appMeta :: (P.Meta -> P.Meta) -> P.Pandoc -> P.Pandoc
|
appMeta :: (P.Meta -> P.Meta) -> P.Pandoc -> P.Pandoc
|
||||||
|
|||||||
Reference in New Issue
Block a user