Eric Bower
·
2026-02-25
1
2{{define "range-diff"}}
3<div class="group">
4 <div class="flex gap-2 collapse">
5 <div class="group patchset-list" style="width: 350px;">
6 <h2 class="text-xl mt">
7 Range-diff <code>rd-{{.Patchset.ID}}</code>
8 </h2>
9
10 {{range $diff := .PatchsetData.RangeDiff}}
11 <div class="box">
12 <dl>
13 <dt>title</dt>
14 <dd><a href="#{{$diff.Header.OldIdx}}-{{$diff.Header.NewIdx}}">{{$diff.Header.Title}}</a></dd>
15
16 <dt>description</dt>
17 <dd>
18 <code class='{{if eq $diff.Type "rm"}}pill-admin{{else if eq $diff.Type "add"}}pill-success{{else if eq $diff.Type "changed"}}pill-info{{end}}'>
19 {{if eq $diff.Header.NewSha ""}}
20 Patch removed
21 {{else if eq $diff.Header.OldSha ""}}
22 Patch added
23 {{else if $diff.Header.ContentEqual}}
24 Patch equal
25 {{else}}
26 Patch changed
27 {{end}}
28 </code>
29 </dd>
30
31 <dt>old #{{$diff.Header.OldIdx}}</dt>
32 <dd><code>{{sha $diff.Header.OldSha}}</code></dd>
33
34 <dt>new #{{$diff.Header.NewIdx}}</dt>
35 <dd><code>{{sha $diff.Header.NewSha}}</code></dd>
36 </dl>
37 </div>
38 {{else}}
39 <div class="box">
40 No range diff found for patchset.
41 </div>
42 {{end}}
43
44 <div><a href="#top">Back to top</a></div>
45 </div>
46
47 <div class="max-w flex-1">
48 <div class="group">
49 {{range .PatchsetData.RangeDiff}}
50 <div id="{{.Header.OldIdx}}-{{.Header.NewIdx}}">
51 <div class="mb">
52 <code class='{{if eq .Type "rm"}}pill-admin{{else if eq .Type "add"}}pill-success{{else if eq .Type "changed"}}pill-info{{end}}'>
53 {{.Header}}
54 </code>
55 </div>
56
57 {{if or .Header.AuthorChanged .Header.TitleChanged .Header.BodyChanged}}
58 <div class="box mb">
59 <dl>
60 {{if .Header.AuthorChanged}}
61 <dt>author changed</dt>
62 <dd>
63 <div><span style="color: tomato;">- {{.Header.OldAuthorName}} <{{.Header.OldAuthorEmail}}></span></div>
64 <div><span style="color: limegreen;">+ {{.Header.NewAuthorName}} <{{.Header.NewAuthorEmail}}></span></div>
65 </dd>
66 {{end}}
67 {{if .Header.TitleChanged}}
68 <dt>title changed</dt>
69 <dd>
70 <div><span style="color: tomato;">- {{.Header.OldTitle}}</span></div>
71 <div><span style="color: limegreen;">+ {{.Header.NewTitle}}</span></div>
72 </dd>
73 {{end}}
74 {{if .Header.BodyChanged}}
75 <dt>message changed</dt>
76 <dd>
77 <pre style="color: tomato; margin: 0;">- {{.Header.OldBody}}</pre>
78 <pre style="color: limegreen; margin: 0;">+ {{.Header.NewBody}}</pre>
79 </dd>
80 {{end}}
81 </dl>
82 </div>
83 {{end}}
84
85 <div>
86 {{- if and .Files (ne .Type "add") -}}
87 {{range .Files}}
88 <div class="flex gap">
89 <div class="flex-1" style="width: 48%;">
90 <h3 class="text-md">old</h3>
91 <div>
92 {{if .OldFile}}
93 {{if .OldFile.OldName}}old:<code>{{.OldFile.OldName}}</code>{{end}}
94 {{if .OldFile.NewName}}new:<code>{{.OldFile.NewName}}</code>{{end}}
95 {{end}}
96 </div>
97 <pre class="m-0">{{- range .Diff -}}
98 {{- if eq .OuterType "delete" -}}
99 {{- if eq .InnerType "insert" -}}
100 <span style="background-color: rgba(255,99,71,0.25); color: limegreen;">{{.Text}}</span>
101 {{- else if eq .InnerType "delete" -}}
102 <span style="background-color: rgba(255,99,71,0.25); color: tomato;">{{.Text}}</span>
103 {{- else -}}
104 <span style="background-color: rgba(255,99,71,0.25);">{{.Text}}</span>
105 {{- end -}}
106 {{- else if eq .OuterType "insert" -}}
107 {{- else if eq .InnerType "insert" -}}
108 <span style="color: limegreen;">{{.Text}}</span>
109 {{- else if eq .InnerType "delete" -}}
110 <span style="color: tomato;">{{.Text}}</span>
111 {{- else -}}
112 <span>{{.Text}}</span>
113 {{- end -}}
114 {{- end -}}</pre>
115 </div>
116
117 <div class="flex-1" style="width: 48%;">
118 <h3 class="text-md">new</h3>
119 <div>
120 {{if .NewFile}}
121 {{if .NewFile.OldName}}old:<code>{{.NewFile.OldName}}</code>{{end}}
122 {{if .NewFile.NewName}}new:<code>{{.NewFile.NewName}}</code>{{end}}
123 {{end}}
124 </div>
125 <pre class="m-0">{{- range .Diff -}}
126 {{- if eq .OuterType "insert" -}}
127 {{- if eq .InnerType "insert" -}}
128 <span style="background-color: rgba(50,205,50,0.25); color: limegreen;">{{.Text}}</span>
129 {{- else if eq .InnerType "delete" -}}
130 <span style="background-color: rgba(50,205,50,0.25); color: tomato;">{{.Text}}</span>
131 {{- else -}}
132 <span style="background-color: rgba(50,205,50,0.25);">{{.Text}}</span>
133 {{- end -}}
134 {{- else if eq .OuterType "delete" -}}
135 {{- else if eq .InnerType "insert" -}}
136 <span style="color: limegreen;">{{.Text}}</span>
137 {{- else if eq .InnerType "delete" -}}
138 <span style="color: tomato;">{{.Text}}</span>
139 {{- else -}}
140 <span>{{.Text}}</span>
141 {{- end -}}
142 {{- end -}}</pre>
143 </div>
144 </div>
145 {{end}}
146 {{- end -}}
147 </div>
148 </div>
149 {{- end -}}
150 </div>
151
152 <hr class="my" />
153 </div>
154 </div>
155</div>
156{{end}}