summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2020-11-16 00:50:06 +0100
committerGitHub <noreply@github.com>2020-11-15 23:50:06 +0000
commitefcba9b011b328a425d8b2c8d9f2273bfbaa7340 (patch)
tree92f7812aa0f184b6b76b957eee56d19b14f31ef6
parent0de546009e466486cd88dfa98d07d8775bd3087d (diff)
downloadgitea-efcba9b011b328a425d8b2c8d9f2273bfbaa7340.tar.gz
gitea-efcba9b011b328a425d8b2c8d9f2273bfbaa7340.zip
Render diff stats server-side (#13579)
Eliminates a flash on page load on the diff stat bars.
-rw-r--r--modules/templates/helper.go3
-rw-r--r--templates/repo/diff/box.tmpl21
-rw-r--r--templates/repo/diff/stats.tmpl6
-rw-r--r--web_src/js/index.js11
4 files changed, 12 insertions, 29 deletions
diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index e4107dfa9a..e1c5d5d86b 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -208,6 +208,9 @@ func NewFuncMap() []template.FuncMap {
}
return path
},
+ "DiffStatsWidth": func(adds int, dels int) string {
+ return fmt.Sprintf("%f", float64(adds)/(float64(adds)+float64(dels))*100)
+ },
"Json": func(in interface{}) string {
out, err := json.Marshal(in)
if err != nil {
diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl
index 05f056feb8..d34d9b8fd9 100644
--- a/templates/repo/diff/box.tmpl
+++ b/templates/repo/diff/box.tmpl
@@ -38,12 +38,7 @@
<li>
<div class="diff-counter count pull-right">
{{if not .IsBin}}
- <span class="add" data-line="{{.Addition}}">+{{.Addition}}</span>
- <span class="bar">
- <div class="pull-left add"></div>
- <div class="pull-left del"></div>
- </span>
- <span class="del" data-line="{{.Deletion}}">-{{.Deletion}}</span>
+ {{template "repo/diff/stats" .}}
{{else}}
<span>{{$.i18n.Tr "repo.diff.bin"}}</span>
{{end}}
@@ -60,12 +55,7 @@
<h4 class="ui top attached normal header rounded">
<div class="diff-counter count ui left">
{{if not $file.IsRenamed}}
- <span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span>
- <span class="bar">
- <div class="pull-left add"></div>
- <div class="pull-left del"></div>
- </span>
- <span class="del" data-line="{{.Deletion}}">- {{.Deletion}}</span>
+ {{template "repo/diff/stats" .}}
{{end}}
</div>
<span class="file">{{$file.Name}}</span>
@@ -101,12 +91,7 @@
{{if $file.IsBin}}
{{$.i18n.Tr "repo.diff.bin"}}
{{else if not $file.IsRenamed}}
- <span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span>
- <span class="bar">
- <div class="pull-left add"></div>
- <div class="pull-left del"></div>
- </span>
- <span class="del" data-line="{{.Deletion}}">- {{.Deletion}}</span>
+ {{template "repo/diff/stats" .}}
{{end}}
</div>
<span class="file">{{if $file.IsRenamed}}{{$file.OldName}} &rarr; {{end}}{{$file.Name}}{{if .IsLFSFile}} ({{$.i18n.Tr "repo.stored_lfs"}}){{end}}</span>
diff --git a/templates/repo/diff/stats.tmpl b/templates/repo/diff/stats.tmpl
new file mode 100644
index 0000000000..7e5d34c3dd
--- /dev/null
+++ b/templates/repo/diff/stats.tmpl
@@ -0,0 +1,6 @@
+<span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span>
+<span class="bar">
+ <div class="pull-left add" style="width: {{DiffStatsWidth .Addition .Deletion}}%"></div>
+ <div class="pull-left del"></div>
+</span>
+<span class="del" data-line="{{.Deletion}}">- {{.Deletion}}</span>
diff --git a/web_src/js/index.js b/web_src/js/index.js
index 1d36dcf6b2..1f4c9a509a 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -1134,17 +1134,6 @@ async function initRepository() {
initReactionSelector();
}
- // Diff
- if ($('.repository.diff').length > 0) {
- $('.diff-counter').each(function () {
- const $item = $(this);
- const addLine = $item.find('span[data-line].add').data('line');
- const delLine = $item.find('span[data-line].del').data('line');
- const addPercent = parseFloat(addLine) / (parseFloat(addLine) + parseFloat(delLine)) * 100;
- $item.find('.bar .add').css('width', `${addPercent}%`);
- });
- }
-
// Quick start and repository home
$('#repo-clone-ssh').on('click', function () {
$('.clone-url').text($(this).data('link'));