Add getProjectDetail call to project API
[?]
Jan 30, 2021, 3:05 AM
APOATM4XGEQZHANT5IY57SKA2QEQ34BZHGNTRAV5KRVPEHUCDYKACDependencies
- [2]
7TQPQW3NBegin adding parsing for project detail. - [3]
GLQSD33YUse mock capability for overview init. - [4]
NAFJ6RB3Minor module reorg. - [5]
PPW6ROC5Render project data - [6]
Z5KNL332Add skeleton of project overview HTML. - [*]
QAC2QJ32Add project overview page to client.
Change contents
- replacement in client/src/Aftok/Api/Project.purs at line 4
import Control.Monad.Except.Trans (runExceptT)import Control.Monad.Except.Trans (ExceptT, runExceptT) - replacement in client/src/Aftok/Api/Project.purs at line 11
import Data.DateTime.Instant (toDateTime)import Data.DateTime.Instant (Instant, toDateTime) - replacement in client/src/Aftok/Api/Project.purs at line 13
import Data.Foldable (class Foldable, foldMapDefaultR)import Data.Foldable (class Foldable, foldr, foldl, foldMapDefaultR)import Data.Functor.Compose (Compose(..)) - replacement in client/src/Aftok/Api/Project.purs at line 16
import Data.Newtype (class Newtype)import Data.Maybe (Maybe)import Data.Newtype (class Newtype, unwrap) - replacement in client/src/Aftok/Api/Project.purs at line 21
-- import Effect (Effect)import Effect (Effect) - edit in client/src/Aftok/Api/Project.purs at line 29
, pidStr - edit in client/src/Aftok/Api/Project.purs at line 36
, parseDatedResponseMay - replacement in client/src/Aftok/Api/Project.purs at line 60
, depFn :: DepreciationFn, depf :: DepreciationFn - replacement in client/src/Aftok/Api/Project.purs at line 87
depFn <- project .: "depreciationFn"pure $ Project' { projectId, projectName, inceptionDate, initiator, depFn }depf <- project .: "depf"pure $ Project' { projectId, projectName, inceptionDate, initiator, depf } - edit in client/src/Aftok/Api/Project.purs at line 99
derive instance contributorNewtype :: Newtype (Contributor' a) _derive instance contributorFunctor :: Functor Contributor'instance contributorFoldable :: Foldable Contributor' wherefoldr f b (Contributor' p) = f (p.joinedOn) bfoldl f b (Contributor' p) = f b (p.joinedOn)foldMap = foldMapDefaultRinstance contributorTraversable :: Traversable Contributor' wheretraverse f (Contributor' p) =Contributor' <<< (\b -> p { joinedOn = b }) <$> f (p.joinedOn)sequence = traverse identity - edit in client/src/Aftok/Api/Project.purs at line 131
projectDetail ::forall date.Project' date ->M.Map UserId (Contributor' date) ->ProjectDetail' dateprojectDetail project contributors =ProjectDetail' { project, contributors } - replacement in client/src/Aftok/Api/Project.purs at line 142
type ProjectDetailJson date ={ project :: Project' date, contributors :: Array (Contributor' date)}derive instance projectDetailNewtype :: Newtype (ProjectDetail' a) _derive instance projectDetailFunctor :: Functor ProjectDetail'instance projectDetailFoldable :: Foldable ProjectDetail' wherefoldr f b (ProjectDetail' p) = foldr f (foldr f b (p.project)) (Compose p.contributors)foldl f b (ProjectDetail' p) = foldl f (foldl f b (p.project)) (Compose p.contributors)foldMap = foldMapDefaultRinstance projectDetailTraversable :: Traversable ProjectDetail' wheretraverse f (ProjectDetail' p) =projectDetail <$> traverse f p.project<*> (map unwrap $ traverse f (Compose p.contributors))sequence = traverse identity - replacement in client/src/Aftok/Api/Project.purs at line 173
-- getProjectDetail :: ProjectId -> Aff (Maybe ProjectDetail)-- getProjectDetail pid = do-- response <- get RF.json ("/api/user/projects/" <> pidStr pid)-- EC.liftEffect-- <<< map (\dt -> ProjectDetail' {-- project: dt.project,-- contributors: M.fromFoldable $ map (\c -> (Tuple c.userId c)) dt.contributors-- })-- $ parsedgetProjectDetail :: ProjectId -> Aff (Either APIError (Maybe ProjectDetail))getProjectDetail pid = doresponse <- get RF.json ("/api/user/projects/" <> pidStr pid <> "/detail")let parsed :: ExceptT APIError Effect (Maybe (ProjectDetail' Instant))parsed = parseDatedResponseMay responseEC.liftEffect<<< runExceptT<<< map (map (map toDateTime))$ parsed - replacement in client/src/Aftok/Overview.purs at line 168
depreciationCols project.depFn <>depreciationCols project.depf <> - replacement in client/src/Aftok/Overview.purs at line 376
, depFn: LinearDepreciation { undep: Days 30.0, dep: Days 300.0 }, depf: LinearDepreciation { undep: Days 30.0, dep: Days 300.0 }