[clckwrks-plugin-bugs-0.7.0: add BugList Jeremy Shaw **20140206222850 Ignore-this: 964a5694ff85c1f81dbd4cc09ad79016 ] hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Acid.hs 8 +import Data.Data (Data, Typeable) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Acid.hs 17 -import Clckwrks.Bugs.Types (Bug(..), BugStatus(..), BugId(..), Milestone(..), MilestoneId(..), TargetDate(..)) +import Clckwrks.Bugs.Types (Bug(..), BugMeta(..), BugStatus(..), BugId(..), Milestone(..), MilestoneId(..), TargetDate(..)) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Acid.hs 64 - put $ bs { bugs = updateIx (bugId bug) bug bugs } + put $ bs { bugs = updateIx (bugId $ bugMeta bug) bug bugs } hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Acid.hs 69 - return $ map bugId (toList bugs) + return $ map (bugId . bugMeta) (toList bugs) + +data SortBugsBy + = SortByBugId +{- + | SortBySubmittor + | SortByMilestone + | SortByStatus +-} + deriving (Eq, Ord, Read, Show, Data, Typeable) +$(deriveSafeCopy 0 'base ''SortBugsBy) + +data SortOrder a + = Asc a + | Desc a + deriving (Eq, Ord, Read, Show, Data, Typeable) +$(deriveSafeCopy 0 'base ''SortOrder) + +allBugMeta :: SortOrder SortBugsBy -> Query BugsState [BugMeta] +allBugMeta sortOrder = + do BugsState{..} <- ask + case sortOrder of + (Asc SortByBugId) -> + return $ map bugMeta (toAscList (Proxy :: Proxy BugId) bugs) + (Desc SortByBugId) -> + return $ map bugMeta (toAscList (Proxy :: Proxy BugId) bugs) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Acid.hs 160 + , 'allBugMeta addfile ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/BugList.hs hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/BugList.hs 1 +{-# LANGUAGE RecordWildCards #-} +{-# OPTIONS_GHC -F -pgmFhsx2hs #-} +module Clckwrks.Bugs.Page.BugList where + +import Clckwrks +import Clckwrks.Bugs.Acid +import Clckwrks.Bugs.Monad +import Clckwrks.Bugs.Types +import Clckwrks.Bugs.URL +import Clckwrks.Bugs.Page.Template (template) +import Clckwrks.ProfileData.Acid (GetProfileData(..)) +import qualified Data.IxSet as IxSet +import Data.List (find) +import Data.String (fromString) +import qualified Data.Text.Lazy as Text +import Numeric (showFFloat) +import HSP.XML +import HSP.XMLGenerator + +bugList :: BugsM Response +bugList = + template (fromString "Bug List") () + <%> +

Bug List

+ <% bugListWidget %> + + +bugListWidget :: XMLGenT BugsM XML +bugListWidget = + do bugs <- query (AllBugMeta (Desc SortByBugId)) +
+ + + + + + + + + + + <% map showBugMeta bugs %> + +
#TitleStatusAssigned
+
+ +showBugMeta :: BugMeta -> XMLGenT BugsM XML +showBugMeta BugMeta{..} = + + <% bugId %> + <% bugTitle %> + <% show bugStatus %> + <% case bugAssigned of + Nothing -> <% () %> + (Just u) -> do mpd <- query (GetProfileData u) + case mpd of + Nothing -> <% () %> + (Just pd) -> <% username pd %> + %> + + hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/EditBug.hs 61 -editBugForm users milestones bug@Bug{..} = +editBugForm users milestones bug@(Bug bugMeta@BugMeta{..} bugBody) = hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/EditBug.hs 63 - Bug <$> pure bugId - <*> pure bugSubmittor - <*> pure bugSubmitted - <*> bugStatusForm bugStatus - <*> bugAssignedForm bugAssigned - <*> bugTitleForm bugTitle + Bug <$> (BugMeta <$> pure bugId + <*> pure bugSubmitter + <*> pure bugSubmitted + <*> bugStatusForm bugStatus + <*> bugAssignedForm bugAssigned + <*> bugTitleForm bugTitle + <*> pure Set.empty + <*> bugMilestoneForm bugMilestone + ) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/EditBug.hs 73 - <*> pure Set.empty - <*> bugMilestoneForm bugMilestone hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/SubmitBug.hs 40 - update $ PutBug (bug { bugId = ident }) + update $ PutBug (bug { bugMeta = (bugMeta bug) { bugId = ident } }) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/SubmitBug.hs 46 - Bug <$> pure (BugId 0) - <*> submittorIdForm - <*> nowForm - <*> pure New - <*> pure Nothing - <*> bugTitleForm + Bug <$> (BugMeta <$> pure (BugId 0) + <*> submittorIdForm + <*> nowForm + <*> pure New + <*> pure Nothing + <*> bugTitleForm + <*> pure Set.empty + <*> pure Nothing + ) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/SubmitBug.hs 56 - <*> pure Set.empty - <*> pure Nothing hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/Timeline.hs 58 -showBugSummary Bug{..} = +showBugSummary (Bug BugMeta{..} bugBody) = hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/ViewBug.hs 34 -bugHtml Bug{..} = - do submittor <- query (GetUsername bugSubmittor) +bugHtml (Bug BugMeta{..} bugBody) = + do submitter <- query (GetUsername bugSubmitter) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Page/ViewBug.hs 47 -
Submitted By:
<% fromMaybe (pack "Anonymous") submittor %>
+
Submitted By:
<% fromMaybe (pack "Anonymous") submitter %>
hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Route.hs 9 +import Clckwrks.Bugs.Page.BugList (bugList) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Route.hs 34 + BugList {} -> return url hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Route.hs 51 + BugList -> + bugList hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Types.hs 1 -{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving, TemplateHaskell #-} +{-# LANGUAGE DeriveDataTypeable, GeneralizedNewtypeDeriving, TemplateHaskell, TypeFamilies #-} hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Types.hs 6 -import Data.Data (Data, Typeable) -import Data.IxSet (Indexable(..), ixSet, ixFun) -import Data.Maybe (maybeToList) -import Data.SafeCopy (SafeCopy, base, deriveSafeCopy) -import Data.Text (Text) -import Data.Time (UTCTime) -import Data.Set (Set) -import Web.Routes (PathInfo(..)) +import Data.Data (Data, Typeable) +import Data.IxSet (Indexable(..), ixSet, ixFun) +import Data.Maybe (maybeToList) +import Data.SafeCopy (SafeCopy, Migrate(..), base, deriveSafeCopy, extension) +import Data.Text (Text) +import Data.Time (UTCTime) +import Data.Set (Set) +import Web.Routes (PathInfo(..)) hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Types.hs 52 -data Bug - = Bug { bugId :: BugId - , bugSubmittor :: UserId - , bugSubmitted :: UTCTime - , bugStatus :: BugStatus - , bugAssigned :: Maybe UserId - , bugTitle :: Text - , bugBody :: Markup - , bugTags :: Set BugTag - , bugMilestone :: Maybe MilestoneId - } +data Bug_0 + = Bug_0 { bugId_0 :: BugId + , bugSubmittor_0 :: UserId + , bugSubmitted_0 :: UTCTime + , bugStatus_0 :: BugStatus + , bugAssigned_0 :: Maybe UserId + , bugTitle_0 :: Text + , bugBody_0 :: Markup + , bugTags_0 :: Set BugTag + , bugMilestone_0 :: Maybe MilestoneId + } hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Types.hs 64 -$(deriveSafeCopy 0 'base ''Bug) +$(deriveSafeCopy 0 'base ''Bug_0) + +data BugMeta = BugMeta + { bugId :: BugId + , bugSubmitter :: UserId + , bugSubmitted :: UTCTime + , bugStatus :: BugStatus + , bugAssigned :: Maybe UserId + , bugTitle :: Text + , bugTags :: Set BugTag + , bugMilestone :: Maybe MilestoneId + } + deriving (Eq, Ord, Read, Show, Data, Typeable) +$(deriveSafeCopy 0 'base ''BugMeta) + +data Bug = Bug + { bugMeta :: BugMeta + , bugBody :: Markup + } + deriving (Eq, Ord, Read, Show, Data, Typeable) +$(deriveSafeCopy 1 'extension ''Bug) + +instance Migrate Bug where + type MigrateFrom Bug = Bug_0 + migrate (Bug_0 id sub subd stat assi titl bdy tags mile) = + Bug (BugMeta id sub subd stat assi titl tags mile) bdy hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/Types.hs 92 + empty = ixSet [ ixFun ((:[]) . bugId . bugMeta) + , ixFun (maybeToList . bugMilestone . bugMeta) + , ixFun ((:[]) . bugStatus . bugMeta) + ] + +instance Indexable BugMeta where hunk ./clckwrks-plugin-bugs/Clckwrks/Bugs/URL.hs 21 + | BugList hunk ./clckwrks-plugin-bugs/clckwrks-plugin-bugs.cabal 2 -Version: 0.6.7 +Version: 0.7.0 hunk ./clckwrks-plugin-bugs/clckwrks-plugin-bugs.cabal 30 + Clckwrks.Bugs.Page.BugList