repos / git-pr

a self-hosted git collaboration server
git clone https://github.com/picosh/git-pr.git

git-pr / tmpl / components
Eric Bower  ·  2025-08-22

range-diff.html

  1{{define "range-diff"}}
  2<div class="group">
  3  <div class="flex gap-2 collapse">
  4    <div class="group patchset-list" style="width: 350px;">
  5      <h2 class="text-xl mt">
  6        Range-diff <code>rd-{{.Patchset.ID}}</code>
  7      </h2>
  8
  9      {{range $diff := .PatchsetData.RangeDiff}}
 10        <div class="box">
 11          <dl>
 12            <dt>title</dt>
 13            <dd><a href="#{{$diff.Header.OldIdx}}-{{$diff.Header.NewIdx}}">{{$diff.Header.Title}}</a></dd>
 14 
 15            <dt>description</dt>
 16            <dd>
 17              <code class='{{if eq $diff.Type "rm"}}pill-admin{{else if eq $diff.Type "add"}}pill-success{{else if eq $diff.Type "diff"}}pill-review{{end}}'>
 18              {{if eq $diff.Header.NewSha ""}}
 19                Patch removed
 20              {{else if eq $diff.Header.OldSha ""}}
 21                Patch added
 22              {{else if $diff.Header.ContentEqual}}
 23                Patch equal
 24              {{else}}
 25                Patch changed
 26              {{end}}
 27              </code>
 28            </dd>
 29
 30            <dt>old #{{$diff.Header.OldIdx}}</dt>
 31            <dd><code>{{sha $diff.Header.OldSha}}</code></dd>
 32
 33            <dt>new #{{$diff.Header.NewIdx}}</dt>
 34            <dd><code>{{sha $diff.Header.NewSha}}</code></dd>
 35          </dl>
 36        </div>
 37      {{else}}
 38      <div class="box">
 39        No range diff found for patchset. 
 40      </div>
 41      {{end}}
 42
 43      <div><a href="#top">Back to top</a></div>
 44    </div>
 45
 46    <div class="max-w flex-1">
 47      <div class="group">
 48        {{range .PatchsetData.RangeDiff}}
 49          <div id="{{.Header.OldIdx}}-{{.Header.NewIdx}}">
 50            <div class="mb">
 51              <code class='{{if eq .Type "rm"}}pill-admin{{else if eq .Type "add"}}pill-success{{else if eq .Type "diff"}}pill-review{{end}}'>
 52                {{.Header}}
 53              </code>
 54            </div>
 55
 56            <div>
 57              {{- if .Files -}}
 58                {{range .Files}}
 59                  <div class="flex gap">
 60                    <div class="flex-1" style="width: 48%;">
 61                      <div>
 62                        {{if .OldFile}}
 63                          {{if .OldFile.OldName}}<code>{{.OldFile.OldName}}</code>{{end}}
 64                          {{if .OldFile.NewName}}<code>{{.OldFile.NewName}}</code>{{end}}
 65                        {{end}}
 66                      </div>
 67                      <pre class="m-0">{{- range .Diff -}}
 68                        {{- if eq .OuterType "delete" -}}
 69                          <span style="background-color: tomato;">{{.Text}}</span>
 70                        {{- else if eq .OuterType "insert" -}}
 71                        {{- else if eq .InnerType "insert" -}}
 72                          <span style="color: limegreen;">{{.Text}}</span>
 73                        {{- else if eq .InnerType "delete" -}}
 74                          <span style="color: tomato;">{{.Text}}</span>
 75                        {{- else -}}
 76                          <span>{{.Text}}</span>
 77                        {{- end -}}
 78                      {{- end -}}</pre>
 79                    </div>
 80
 81                    <div class="flex-1" style="width: 48%;">
 82                      <div>
 83                        {{if .NewFile.OldName}}<code>{{.NewFile.OldName}}</code>{{end}}
 84                        {{if .NewFile.NewName}}<code>{{.NewFile.NewName}}</code>{{end}}
 85                      </div>
 86                      <pre class="m-0">{{- range .Diff -}}
 87                        {{- if eq .OuterType "insert" -}}
 88                          <span style="background-color: limegreen;">{{.Text}}</span>
 89                        {{- else if eq .OuterType "delete" -}}
 90                        {{- else if eq .InnerType "insert" -}}
 91                          <span style="color: limegreen;">{{.Text}}</span>
 92                        {{- else if eq .InnerType "delete" -}}
 93                          <span style="color: tomato;">{{.Text}}</span>
 94                        {{- else -}}
 95                          <span>{{.Text}}</span>
 96                        {{- end -}}
 97                      {{- end -}}</pre>
 98                    </div>
 99                  </div>
100                {{end}}
101              {{- end -}}
102            </div>
103          </div>
104        {{- end -}}
105      </div>
106
107      <hr class="my" />
108    </div>
109  </div>
110</div>
111{{end}}