internal/web/templates/mr.html

7ad3de789eb7388381be33637ec3854cc4c7885b
gitbay/internal/web/templates/mr.html history · blame · raw

91 lines · 5213 bytes

 1{{define "title"}}!{{.MR.Number}} · {{.Repo.OwnerName}}/{{.Repo.Name}}{{end}}
 2{{define "content"}}
 3{{$base := printf "/%s/%s/mrs/%d" .Repo.OwnerName .Repo.Name .MR.Number}}
 4<h1 class="issuetitle">{{.MR.Title}} <span class="issuenumber">!{{.MR.Number}}</span></h1>
 5<p class="issuemeta"><span class="chip chip-{{.MR.State}}">{{.MR.State}}</span>
 6<a href="/{{.MR.Author}}">{{.MR.Author}}</a> wants to merge <code>{{if .MR.SourcePath}}{{.MR.SourcePath}}:{{end}}{{.MR.SourceRef}}</code> into <code>{{.MR.TargetRef}}</code></p>
 7
 8<div class="withaside">
 9<div class="mainside">
10
11<nav class="subtabs" aria-label="Merge request">
12  <a {{if eq .View "conversation"}}aria-current="page" {{end}}href="{{$base}}">Conversation{{if .Comments}} <i>{{len .Comments}}</i>{{end}}</a>
13  <a {{if eq .View "commits"}}aria-current="page" {{end}}href="{{$base}}?view=commits">Commits{{if .Commits}} <i>{{len .Commits}}</i>{{end}}</a>
14  <a {{if eq .View "diff"}}aria-current="page" {{end}}href="{{$base}}?view=diff">Files changed{{if .Stat.Files}} <i>{{.Stat.Files}}</i>{{end}}</a>
15</nav>
16
17{{if eq .View "conversation"}}
18{{if .CanEdit}}<details class="editbox"><summary>Edit</summary>
19<form method="post" action="{{$base}}/edit" class="commentform">
20<p><input type="text" name="title" aria-label="Title" value="{{.MR.Title}}" required></p>
21<p><textarea name="body" aria-label="Description" rows="8">{{.MR.Body}}</textarea></p>
22<p><button type="submit">Save</button></p>
23</form></details>{{end}}
24{{if .BodyHTML}}<article class="comment">
25  <header class="commenthead"><strong><a href="/{{.MR.Author}}">{{.MR.Author}}</a></strong></header>
26  <div class="rendered">{{.BodyHTML}}</div>
27</article>{{end}}
28{{range .Comments}}
29{{if eq .Kind "system"}}<div class="syscomment">{{.BodyHTML}} <span class="when">{{when .CreatedAt}}</span></div>
30{{else}}<article class="comment">
31  <header class="commenthead"><strong><a href="/{{.Author}}">{{.Author}}</a></strong> <span class="when">{{when .CreatedAt}}</span></header>
32  <div class="rendered">{{.BodyHTML}}</div>
33</article>{{end}}
34{{end}}
35{{if .DetachedThreads}}<h2>Threads on earlier revisions</h2>
36{{range .DetachedThreads}}<div class="thread stale"><p class="threadstate">{{if .Stale}}stale{{end}}{{if .Resolved}}{{if .Stale}} · {{end}}resolved by {{.Resolved}}{{end}}</p>{{range .Comments}}<p class="commenthead"><strong>{{.Author}}</strong> <span class="when">{{when .CreatedAt}}</span></p><div class="rendered">{{.BodyHTML}}</div>{{end}}</div>{{end}}{{end}}
37{{if .Viewer}}
38<form method="post" action="{{$base}}/comment" class="commentform">
39<p><textarea name="body" aria-label="Comment" rows="4" placeholder="Comment as {{.Viewer}}"></textarea></p>
40<p><button type="submit">Comment</button></p>
41</form>
42{{end}}
43
44{{else if eq .View "commits"}}
45<ul class="loglist">
46{{range .Commits}}<li>
47  <div class="commitmain">
48    <p class="subject"><a href="/{{$.Repo.OwnerName}}/{{$.Repo.Name}}/commit/{{.SHA}}">{{.Subject}}</a></p>
49    <p class="meta">{{.AuthorName}} · {{.Date}}</p>
50  </div>
51  <div class="commitside">
52    {{template "sigbadge" .Sig}}
53    <code><a href="/{{$.Repo.OwnerName}}/{{$.Repo.Name}}/commit/{{.SHA}}">{{.ShortSHA}}</a></code>
54  </div>
55</li>
56{{else}}<li class="empty">no commits on this merge request</li>
57{{end}}
58</ul>
59
60{{else}}
61<p class="diffstat">{{.Stat.Files}} file{{if ne .Stat.Files 1}}s{{end}} changed, <span class="add">+{{.Stat.Adds}}</span> <span class="del">−{{.Stat.Dels}}</span></p>
62<pre class="diff">{{range .DiffLines}}<span class="{{.Class}}">{{.Text}}</span>
63{{range .Threads}}</pre><div class="thread{{if .Resolved}} resolved{{end}}">{{if .Resolved}}<p class="threadstate">resolved by {{.Resolved}}</p>{{end}}{{range .Comments}}<p class="commenthead"><strong>{{.Author}}</strong> <span class="when">{{when .CreatedAt}}</span></p><div class="rendered">{{.BodyHTML}}</div>{{end}}</div><pre class="diff">{{end}}{{end}}</pre>
64{{end}}
65
66</div>
67
68<aside class="aside">
69  <div class="grp">
70    <h2>Reviews</h2>
71    {{range .Reviews}}<p class="row"><span class="dot {{if eq .Verdict "approve"}}ok{{else}}pend{{end}}"></span><a href="/{{.Reviewer}}">{{.Reviewer}}</a> {{.Verdict}}{{if .Stale}} <span class="chip chip-stale">stale</span>{{end}}</p>
72    {{else}}<p class="none">No reviews yet</p>{{end}}
73  </div>
74  <div class="grp">
75    <h2>Checks</h2>
76    {{if .Checks}}<p class="row"><span class="badge check-{{.Combined}}">{{.Combined}}</span></p>
77    {{range .Checks}}<p class="row"><span class="dot {{if eq .State "success"}}ok{{else if eq .State "failure"}}bad{{else}}pend{{end}}"></span>{{if .TargetURL}}<a href="{{.TargetURL}}" rel="nofollow">{{.Context}}</a>{{else}}{{.Context}}{{end}} <span class="none">{{.State}}</span></p>{{end}}
78    {{else}}<p class="none">No checks reported</p>{{end}}
79  </div>
80  <div class="grp">
81    <h2>Source</h2>
82    <p class="row"><code>{{if .MR.SourcePath}}{{.MR.SourcePath}}:{{end}}{{.MR.SourceRef}}</code></p>
83    <p class="row none">into <code>{{.MR.TargetRef}}</code> at <code>{{short .MR.HeadSHA}}</code></p>
84  </div>
85  {{if .MR.Milestone}}<div class="grp">
86    <h2>Milestone</h2>
87    <p class="row"><a href="/{{.Repo.OwnerName}}/{{.Repo.Name}}/milestones">{{.MR.Milestone}}</a></p>
88  </div>{{end}}
89</aside>
90</div>
91{{end}}