From 03eba32bd91533f090a82b62bd9cffd9e448aaa7 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 26 Apr 2022 18:54:40 +0800 Subject: Add a new menu in file view to open blame view and fix blame view select range bug (#19500) --- web_src/js/features/repo-code.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'web_src/js/features/repo-code.js') diff --git a/web_src/js/features/repo-code.js b/web_src/js/features/repo-code.js index a4b6e433a5..d7b4baac83 100644 --- a/web_src/js/features/repo-code.js +++ b/web_src/js/features/repo-code.js @@ -15,10 +15,7 @@ function selectRange($list, $select, $from) { // add hashchange to permalink const $issue = $('a.ref-in-new-issue'); const $copyPermalink = $('a.copy-line-permalink'); - - if ($copyPermalink.length === 0) { - return; - } + const $viewGitBlame = $('a.view_git_blame'); const updateIssueHref = function (anchor) { if ($issue.length === 0) { @@ -29,7 +26,22 @@ function selectRange($list, $select, $from) { $issue.attr('href', href); }; + const updateViewGitBlameFragment = function (anchor) { + if ($viewGitBlame.length === 0) { + return; + } + let href = $viewGitBlame.attr('href'); + href = `${href.replace(/#L\d+$|#L\d+-L\d+$/, '')}`; + if (anchor.length !== 0) { + href = `${href}#${anchor}`; + } + $viewGitBlame.attr('href', href); + }; + const updateCopyPermalinkHref = function(anchor) { + if ($copyPermalink.length === 0) { + return; + } let link = $copyPermalink.attr('data-clipboard-text'); link = `${link.replace(/#L\d+$|#L\d+-L\d+$/, '')}#${anchor}`; $copyPermalink.attr('data-clipboard-text', link); @@ -53,6 +65,7 @@ function selectRange($list, $select, $from) { changeHash(`#L${a}-L${b}`); updateIssueHref(`L${a}-L${b}`); + updateViewGitBlameFragment(`L${a}-L${b}`); updateCopyPermalinkHref(`L${a}-L${b}`); return; } @@ -61,6 +74,7 @@ function selectRange($list, $select, $from) { changeHash(`#${$select.attr('rel')}`); updateIssueHref($select.attr('rel')); + updateViewGitBlameFragment($select.attr('rel')); updateCopyPermalinkHref($select.attr('rel')); } -- cgit v1.2.3