repos / git-pr

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

git-pr / tmpl
Eric Bower  ·  2025-02-02

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.OldName}}<code>{{.OldFile.OldName}}</code>{{end}}
 63                        {{if .OldFile.NewName}}<code>{{.OldFile.NewName}}</code>{{end}}
 64                      </div>
 65                      <pre class="m-0">{{- range .Diff -}}
 66                        {{- if eq .OuterType "delete" -}}
 67                          <span style="background-color: tomato;">{{.Text}}</span>
 68                        {{- else if eq .OuterType "insert" -}}
 69                        {{- else if eq .InnerType "insert" -}}
 70                          <span style="color: limegreen;">{{.Text}}</span>
 71                        {{- else if eq .InnerType "delete" -}}
 72                          <span style="color: tomato;">{{.Text}}</span>
 73                        {{- else -}}
 74                          <span>{{.Text}}</span>
 75                        {{- end -}}
 76                      {{- end -}}</pre>
 77                    </div>
 78
 79                    <div class="flex-1" style="width: 48%;">
 80                      <div>
 81                        {{if .NewFile.OldName}}<code>{{.NewFile.OldName}}</code>{{end}}
 82                        {{if .NewFile.NewName}}<code>{{.NewFile.NewName}}</code>{{end}}
 83                      </div>
 84                      <pre class="m-0">{{- range .Diff -}}
 85                        {{- if eq .OuterType "insert" -}}
 86                          <span style="background-color: limegreen;">{{.Text}}</span>
 87                        {{- else if eq .OuterType "delete" -}}
 88                        {{- else if eq .InnerType "insert" -}}
 89                          <span style="color: limegreen;">{{.Text}}</span>
 90                        {{- else if eq .InnerType "delete" -}}
 91                          <span style="color: tomato;">{{.Text}}</span>
 92                        {{- else -}}
 93                          <span>{{.Text}}</span>
 94                        {{- end -}}
 95                      {{- end -}}</pre>
 96                    </div>
 97                  </div>
 98                {{end}}
 99              {{- end -}}
100            </div>
101          </div>
102        {{- end -}}
103      </div>
104
105      <hr class="my" />
106    </div>
107  </div>
108</div>
109{{end}}