diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-26 18:10:10 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-26 18:10:10 +0300 |
commit | c86ec1d072338034a312bb4be0ff175892fa01b7 (patch) | |
tree | e67bb3ce9beb174a20991e53d998f59adc35f02e /app/assets/javascripts/blob | |
parent | c15582526dd15f5ea8fac0906624cc5cd2db03ab (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/blob')
-rw-r--r-- | app/assets/javascripts/blob/blob_blame_link.js | 14 | ||||
-rw-r--r-- | app/assets/javascripts/blob/blob_line_permalink_updater.js | 6 | ||||
-rw-r--r-- | app/assets/javascripts/blob/utils.js | 16 |
3 files changed, 30 insertions, 6 deletions
diff --git a/app/assets/javascripts/blob/blob_blame_link.js b/app/assets/javascripts/blob/blob_blame_link.js index 41dfd7b82b8..a5191a3d513 100644 --- a/app/assets/javascripts/blob/blob_blame_link.js +++ b/app/assets/javascripts/blob/blob_blame_link.js @@ -1,4 +1,6 @@ -function addBlameLink(containerSelector, linkClass) { +import { getPageParamValue, getPageSearchString } from './utils'; + +export function addBlameLink(containerSelector, linkClass) { const containerEl = document.querySelector(containerSelector); if (!containerEl) { @@ -13,10 +15,14 @@ function addBlameLink(containerSelector, linkClass) { lineLinkCopy.classList.remove(linkClass, 'diff-line-num'); const { lineNumber } = lineLink.dataset; - const { blamePath } = document.querySelector('.line-numbers').dataset; const blameLink = document.createElement('a'); + const { blamePath } = document.querySelector('.line-numbers').dataset; blameLink.classList.add('file-line-blame'); - blameLink.href = `${blamePath}#L${lineNumber}`; + const blamePerPage = document.querySelector('.js-per-page')?.dataset?.blamePerPage; + const pageNumber = getPageParamValue(lineNumber, blamePerPage); + const searchString = getPageSearchString(blamePath, pageNumber); + + blameLink.href = `${blamePath}${searchString}#L${lineNumber}`; const wrapper = document.createElement('div'); wrapper.classList.add('line-links', 'diff-line-num'); @@ -27,5 +33,3 @@ function addBlameLink(containerSelector, linkClass) { } }); } - -export default addBlameLink; diff --git a/app/assets/javascripts/blob/blob_line_permalink_updater.js b/app/assets/javascripts/blob/blob_line_permalink_updater.js index df38c5400e2..928035d7c1e 100644 --- a/app/assets/javascripts/blob/blob_line_permalink_updater.js +++ b/app/assets/javascripts/blob/blob_line_permalink_updater.js @@ -1,4 +1,5 @@ import { getLocationHash } from '../lib/utils/url_utility'; +import { getPageParamValue, getPageSearchString } from './utils'; const lineNumberRe = /^(L|LC)[0-9]+/; @@ -16,7 +17,10 @@ const updateLineNumbersOnBlobPermalinks = (linksToUpdate) => { permalinkButton.dataset.originalHref = href; return href; })(); - permalinkButton.setAttribute('href', `${baseHref}${hashUrlString}`); + const lineNum = parseInt(hash.split('L')[1], 10); + const page = getPageParamValue(lineNum); + const searchString = getPageSearchString(baseHref, page); + permalinkButton.setAttribute('href', `${baseHref}${searchString}${hashUrlString}`); }); } }; diff --git a/app/assets/javascripts/blob/utils.js b/app/assets/javascripts/blob/utils.js index bbc061dd36e..92c6277d4f1 100644 --- a/app/assets/javascripts/blob/utils.js +++ b/app/assets/javascripts/blob/utils.js @@ -1,4 +1,5 @@ import Editor from '~/editor/source_editor'; +import { getBaseURL } from '~/lib/utils/url_utility'; export function initSourceEditor({ el, ...args }) { const editor = new Editor({ @@ -13,4 +14,19 @@ export function initSourceEditor({ el, ...args }) { }); } +const blameLinesPerPage = document.querySelector('.js-per-page')?.dataset?.blamePerPage; + +export const getPageParamValue = (lineNum, blamePerPage = blameLinesPerPage) => { + if (!blamePerPage) return ''; + const page = Math.ceil(parseInt(lineNum, 10) / parseInt(blamePerPage, 10)); + return page <= 1 ? '' : page; +}; + +export const getPageSearchString = (path, page) => { + if (!page) return ''; + const url = new URL(path, getBaseURL()); + url.searchParams.set('page', page); + return url.search; +}; + export default () => ({}); |