mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-26 02:50:54 +00:00
Add Image Diff for SVG files (#14867)
* Added type sniffer. * Switched content detection from base to typesniffer. * Added GuessContentType to Blob. * Moved image info logic to client. Added support for SVG images in diff. * Restore old blocked svg behaviour. * Added missing image formats. * Execute image diff only when container is visible. * add margin to spinner * improve BIN tag on image diffs * Default to render view. * Show image diff on incomplete diff. Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
parent
7979c3654e
commit
8e262104c2
19 changed files with 449 additions and 441 deletions
|
@ -1,15 +1,13 @@
|
|||
{{ $imagePathOld := printf "%s/%s" .root.BeforeRawPath (EscapePound .file.OldName) }}
|
||||
{{ $imagePathNew := printf "%s/%s" .root.RawPath (EscapePound .file.Name) }}
|
||||
{{ $imageInfoBase := (call .root.ImageInfoBase .file.OldName) }}
|
||||
{{ $imageInfoHead := (call .root.ImageInfo .file.Name) }}
|
||||
{{if or $imageInfoBase $imageInfoHead}}
|
||||
{{if or .blobBase .blobHead}}
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="image-diff" data-path-before="{{$imagePathOld}}" data-path-after="{{$imagePathNew}}">
|
||||
<div class="ui secondary pointing tabular top attached borderless menu stackable new-menu">
|
||||
<div class="new-menu-inner">
|
||||
<a class="item active" data-tab="diff-side-by-side">{{.root.i18n.Tr "repo.diff.image.side_by_side"}}</a>
|
||||
{{if and $imageInfoBase $imageInfoHead}}
|
||||
{{if and .blobBase .blobHead}}
|
||||
<a class="item" data-tab="diff-swipe">{{.root.i18n.Tr "repo.diff.image.swipe"}}</a>
|
||||
<a class="item" data-tab="diff-overlay">{{.root.i18n.Tr "repo.diff.image.overlay"}}</a>
|
||||
{{end}}
|
||||
|
@ -18,63 +16,39 @@
|
|||
<div class="hide">
|
||||
<div class="ui bottom attached tab image-diff-container active" data-tab="diff-side-by-side">
|
||||
<div class="diff-side-by-side">
|
||||
{{if $imageInfoBase }}
|
||||
{{if .blobBase }}
|
||||
<span class="side">
|
||||
<p class="side-header">{{.root.i18n.Tr "repo.diff.file_before"}}</p>
|
||||
<span class="before-container"><img class="image-before" /></span>
|
||||
<p>
|
||||
{{ $classWidth := "" }}
|
||||
{{ $classHeight := "" }}
|
||||
{{ $classByteSize := "" }}
|
||||
{{if $imageInfoHead}}
|
||||
{{if not (eq $imageInfoBase.Width $imageInfoHead.Width)}}
|
||||
{{ $classWidth = "red" }}
|
||||
{{end}}
|
||||
{{if not (eq $imageInfoBase.Height $imageInfoHead.Height)}}
|
||||
{{ $classHeight = "red" }}
|
||||
{{end}}
|
||||
{{if not (eq $imageInfoBase.ByteSize $imageInfoHead.ByteSize)}}
|
||||
{{ $classByteSize = "red" }}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{.root.i18n.Tr "repo.diff.file_image_width"}}: <span class="text {{$classWidth}}">{{$imageInfoBase.Width}}</span>
|
||||
|
|
||||
{{.root.i18n.Tr "repo.diff.file_image_height"}}: <span class="text {{$classHeight}}">{{$imageInfoBase.Height}}</span>
|
||||
|
|
||||
{{.root.i18n.Tr "repo.diff.file_byte_size"}}: <span class="text {{$classByteSize}}">{{FileSize $imageInfoBase.ByteSize}}</span>
|
||||
<span class="bounds-info-before">
|
||||
{{.root.i18n.Tr "repo.diff.file_image_width"}}: <span class="text bounds-info-width"></span>
|
||||
|
|
||||
{{.root.i18n.Tr "repo.diff.file_image_height"}}: <span class="text bounds-info-height"></span>
|
||||
|
|
||||
</span>
|
||||
{{.root.i18n.Tr "repo.diff.file_byte_size"}}: <span class="text">{{FileSize .blobBase.Size}}</span>
|
||||
</p>
|
||||
</span>
|
||||
{{end}}
|
||||
{{if $imageInfoHead }}
|
||||
{{if .blobHead }}
|
||||
<span class="side">
|
||||
<p class="side-header">{{.root.i18n.Tr "repo.diff.file_after"}}</p>
|
||||
<span class="after-container"><img class="image-after" /></span>
|
||||
<p>
|
||||
{{ $classWidth := "" }}
|
||||
{{ $classHeight := "" }}
|
||||
{{ $classByteSize := "" }}
|
||||
{{if $imageInfoBase}}
|
||||
{{if not (eq $imageInfoBase.Width $imageInfoHead.Width)}}
|
||||
{{ $classWidth = "green" }}
|
||||
{{end}}
|
||||
{{if not (eq $imageInfoBase.Height $imageInfoHead.Height)}}
|
||||
{{ $classHeight = "green" }}
|
||||
{{end}}
|
||||
{{if not (eq $imageInfoBase.ByteSize $imageInfoHead.ByteSize)}}
|
||||
{{ $classByteSize = "green" }}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{.root.i18n.Tr "repo.diff.file_image_width"}}: <span class="text {{$classWidth}}">{{$imageInfoHead.Width}}</span>
|
||||
|
|
||||
{{.root.i18n.Tr "repo.diff.file_image_height"}}: <span class="text {{$classHeight}}">{{$imageInfoHead.Height}}</span>
|
||||
|
|
||||
{{.root.i18n.Tr "repo.diff.file_byte_size"}}: <span class="text {{$classByteSize}}">{{FileSize $imageInfoHead.ByteSize}}</span>
|
||||
<span class="bounds-info-after">
|
||||
{{.root.i18n.Tr "repo.diff.file_image_width"}}: <span class="text bounds-info-width"></span>
|
||||
|
|
||||
{{.root.i18n.Tr "repo.diff.file_image_height"}}: <span class="text bounds-info-height"></span>
|
||||
|
|
||||
</span>
|
||||
{{.root.i18n.Tr "repo.diff.file_byte_size"}}: <span class="text">{{FileSize .blobHead.Size}}</span>
|
||||
</p>
|
||||
</span>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
{{if and $imageInfoBase $imageInfoHead}}
|
||||
{{if and .blobBase .blobHead}}
|
||||
<div class="ui bottom attached tab image-diff-container" data-tab="diff-swipe">
|
||||
<div class="diff-swipe">
|
||||
<div class="swipe-frame">
|
||||
|
@ -102,7 +76,7 @@
|
|||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="ui active centered inline loader"></div>
|
||||
<div class="ui active centered inline loader mb-4"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue