List ticket deps and reverse deps in ticket page
This commit is contained in:
parent
54bbf1907a
commit
fcb68ceea7
6 changed files with 111 additions and 7 deletions
|
@ -81,6 +81,7 @@ import Vervis.TicketFilter (filterTickets)
|
||||||
import Vervis.Time (showDate)
|
import Vervis.Time (showDate)
|
||||||
import Vervis.Widget.Discussion (discussionW)
|
import Vervis.Widget.Discussion (discussionW)
|
||||||
import Vervis.Widget.Sharer (personLinkW)
|
import Vervis.Widget.Sharer (personLinkW)
|
||||||
|
import Vervis.Widget.Ticket
|
||||||
|
|
||||||
getTicketsR :: ShrIdent -> PrjIdent -> Handler Html
|
getTicketsR :: ShrIdent -> PrjIdent -> Handler Html
|
||||||
getTicketsR shar proj = do
|
getTicketsR shar proj = do
|
||||||
|
@ -154,12 +155,11 @@ getTicketNewR shar proj = do
|
||||||
getTicketR :: ShrIdent -> PrjIdent -> Int -> Handler Html
|
getTicketR :: ShrIdent -> PrjIdent -> Int -> Handler Html
|
||||||
getTicketR shar proj num = do
|
getTicketR shar proj num = do
|
||||||
mpid <- maybeAuthId
|
mpid <- maybeAuthId
|
||||||
(author, massignee, closer, ticket) <- runDB $ do
|
(author, massignee, closer, ticket, deps, rdeps) <- runDB $ do
|
||||||
ticket <- do
|
Entity tid ticket <- do
|
||||||
Entity s _ <- getBy404 $ UniqueSharer shar
|
Entity s _ <- getBy404 $ UniqueSharer shar
|
||||||
Entity p _ <- getBy404 $ UniqueProject proj s
|
Entity p _ <- getBy404 $ UniqueProject proj s
|
||||||
Entity _ t <- getBy404 $ UniqueTicket p num
|
getBy404 $ UniqueTicket p num
|
||||||
return t
|
|
||||||
author <- do
|
author <- do
|
||||||
person <- get404 $ ticketCreator ticket
|
person <- get404 $ ticketCreator ticket
|
||||||
get404 $ personIdent person
|
get404 $ personIdent person
|
||||||
|
@ -173,7 +173,15 @@ getTicketR shar proj num = do
|
||||||
person <- get404 $ ticketCloser ticket
|
person <- get404 $ ticketCloser ticket
|
||||||
get404 $ personIdent person
|
get404 $ personIdent person
|
||||||
else return author
|
else return author
|
||||||
return (author, massignee, closer, ticket)
|
deps <- select $ from $ \ (dep `InnerJoin` t) -> do
|
||||||
|
on $ dep ^. TicketDependencyChild E.==. t ^. TicketId
|
||||||
|
where_ $ dep ^. TicketDependencyParent E.==. val tid
|
||||||
|
return t
|
||||||
|
rdeps <- select $ from $ \ (dep `InnerJoin` t) -> do
|
||||||
|
on $ dep ^. TicketDependencyParent E.==. t ^. TicketId
|
||||||
|
where_ $ dep ^. TicketDependencyChild E.==. val tid
|
||||||
|
return t
|
||||||
|
return (author, massignee, closer, ticket, deps, rdeps)
|
||||||
let desc = renderSourceT Markdown $ T.filter (/= '\r') $ ticketDesc ticket
|
let desc = renderSourceT Markdown $ T.filter (/= '\r') $ ticketDesc ticket
|
||||||
discuss =
|
discuss =
|
||||||
discussionW
|
discussionW
|
||||||
|
|
39
src/Vervis/Widget/Ticket.hs
Normal file
39
src/Vervis/Widget/Ticket.hs
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{- This file is part of Vervis.
|
||||||
|
-
|
||||||
|
- Written in 2016 by fr33domlover <fr33domlover@riseup.net>.
|
||||||
|
-
|
||||||
|
- ♡ Copying is an act of love. Please copy, reuse and share.
|
||||||
|
-
|
||||||
|
- The author(s) have dedicated all copyright and related and neighboring
|
||||||
|
- rights to this software to the public domain worldwide. This software is
|
||||||
|
- distributed without any warranty.
|
||||||
|
-
|
||||||
|
- You should have received a copy of the CC0 Public Domain Dedication along
|
||||||
|
- with this software. If not, see
|
||||||
|
- <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
-}
|
||||||
|
|
||||||
|
module Vervis.Widget.Ticket
|
||||||
|
( ticketDepW
|
||||||
|
)
|
||||||
|
where
|
||||||
|
|
||||||
|
import Prelude
|
||||||
|
|
||||||
|
import Yesod.Core (Route)
|
||||||
|
import Yesod.Core.Handler (getUrlRender)
|
||||||
|
import Yesod.Core (newIdent)
|
||||||
|
|
||||||
|
import qualified Data.Text as T (unpack)
|
||||||
|
|
||||||
|
import Vervis.Foundation
|
||||||
|
import Vervis.Model
|
||||||
|
import Vervis.Model.Ident
|
||||||
|
import Vervis.Settings (widgetFile)
|
||||||
|
import Vervis.Style
|
||||||
|
|
||||||
|
ticketDepW :: ShrIdent -> PrjIdent -> Ticket -> Widget
|
||||||
|
ticketDepW shr prj ticket = do
|
||||||
|
todoC <- newIdent
|
||||||
|
doneC <- newIdent
|
||||||
|
$(widgetFile "ticket/widget/dep")
|
|
@ -20,10 +20,24 @@ $# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
<input type=submit value="Delete this ticket">
|
<input type=submit value="Delete this ticket">
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Depended by: TODO
|
Depended by:
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
$if null rdeps
|
||||||
|
<li>(none)
|
||||||
|
$else
|
||||||
|
$forall Entity _ t <- rdeps
|
||||||
|
^{ticketDepW shar proj t}
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Depends on: TODO
|
Depends on:
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
$if null deps
|
||||||
|
<li>(none)
|
||||||
|
$else
|
||||||
|
$forall Entity _ t <- deps
|
||||||
|
^{ticketDepW shar proj t}
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Created on #{showDate $ ticketCreated ticket} by
|
Created on #{showDate $ ticketCreated ticket} by
|
||||||
|
|
20
templates/ticket/widget/dep.cassius
Normal file
20
templates/ticket/widget/dep.cassius
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/* This file is part of Vervis.
|
||||||
|
*
|
||||||
|
* Written in 2016 by fr33domlover <fr33domlover@riseup.net>.
|
||||||
|
*
|
||||||
|
* ♡ Copying is an act of love. Please copy, reuse and share.
|
||||||
|
*
|
||||||
|
* The author(s) have dedicated all copyright and related and neighboring
|
||||||
|
* rights to this software to the public domain worldwide. This software is
|
||||||
|
* distributed without any warranty.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the CC0 Public Domain Dedication along
|
||||||
|
* with this software. If not, see
|
||||||
|
* <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.#{todoC}
|
||||||
|
color: #{dark red}
|
||||||
|
|
||||||
|
.#{doneC}
|
||||||
|
color: #{dark green}
|
22
templates/ticket/widget/dep.hamlet
Normal file
22
templates/ticket/widget/dep.hamlet
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
$# This file is part of Vervis.
|
||||||
|
$#
|
||||||
|
$# Written in 2016 by fr33domlover <fr33domlover@riseup.net>.
|
||||||
|
$#
|
||||||
|
$# ♡ Copying is an act of love. Please copy, reuse and share.
|
||||||
|
$#
|
||||||
|
$# The author(s) have dedicated all copyright and related and neighboring
|
||||||
|
$# rights to this software to the public domain worldwide. This software is
|
||||||
|
$# distributed without any warranty.
|
||||||
|
$#
|
||||||
|
$# You should have received a copy of the CC0 Public Domain Dedication along
|
||||||
|
$# with this software. If not, see
|
||||||
|
$# <http://creativecommons.org/publicdomain/zero/1.0/>.
|
||||||
|
|
||||||
|
$if ticketDone ticket
|
||||||
|
<span .#{doneC}>
|
||||||
|
☒
|
||||||
|
$else
|
||||||
|
<span .#{todoC}>
|
||||||
|
☐
|
||||||
|
<a href=@{TicketR shr prj $ ticketNumber ticket}>
|
||||||
|
#{ticketTitle ticket}
|
|
@ -151,6 +151,7 @@ library
|
||||||
Vervis.Widget.Repo
|
Vervis.Widget.Repo
|
||||||
Vervis.Widget.Role
|
Vervis.Widget.Role
|
||||||
Vervis.Widget.Sharer
|
Vervis.Widget.Sharer
|
||||||
|
Vervis.Widget.Ticket
|
||||||
Vervis.Wiki
|
Vervis.Wiki
|
||||||
-- other-modules:
|
-- other-modules:
|
||||||
default-extensions: TemplateHaskell
|
default-extensions: TemplateHaskell
|
||||||
|
|
Loading…
Reference in a new issue