From deeca3d42a2812cd806d6c7cd24f9486d748e6a1 Mon Sep 17 00:00:00 2001 From: Jacques Date: Wed, 30 Aug 2023 12:28:52 +0200 Subject: [PATCH] Render blame info in the blob viewer Renders blame info in the blob viewer --- .../components/blob_button_group.vue | 4 + .../components/blob_content_viewer.vue | 6 + .../source_viewer/components/blame_info.vue | 125 ++++++++++++++++++ .../queries/blame_data.query.graphql | 35 +++++ .../source_viewer/source_viewer_new.vue | 109 ++++++++++++--- app/assets/stylesheets/framework/files.scss | 1 + 6 files changed, 260 insertions(+), 20 deletions(-) create mode 100644 app/assets/javascripts/vue_shared/components/source_viewer/components/blame_info.vue create mode 100644 app/assets/javascripts/vue_shared/components/source_viewer/queries/blame_data.query.graphql diff --git a/app/assets/javascripts/repository/components/blob_button_group.vue b/app/assets/javascripts/repository/components/blob_button_group.vue index 99b861ca104091..0a14544e11406e 100644 --- a/app/assets/javascripts/repository/components/blob_button_group.vue +++ b/app/assets/javascripts/repository/components/blob_button_group.vue @@ -14,6 +14,7 @@ export default { replace: __('Replace'), replacePrimaryBtnText: __('Replace file'), delete: __('Delete'), + blame: __('Blame'), }, components: { GlButtonGroup, @@ -129,6 +130,9 @@ export default { {{ $options.i18n.delete }} + + {{ $options.i18n.blame }} + @@ -329,6 +333,7 @@ export default { :show-fork-suggestion="showForkSuggestion" :is-using-lfs="isUsingLfs" @fork="setForkTarget('view')" + @blame="handleToggleBlame" /> @@ -354,6 +359,7 @@ export default { v-else :blob="blobInfo" :chunks="chunks" + :show-blame="showBlame" :project-path="projectPath" :current-ref="currentRef" class="blob-viewer" diff --git a/app/assets/javascripts/vue_shared/components/source_viewer/components/blame_info.vue b/app/assets/javascripts/vue_shared/components/source_viewer/components/blame_info.vue new file mode 100644 index 00000000000000..11046f9e8c640c --- /dev/null +++ b/app/assets/javascripts/vue_shared/components/source_viewer/components/blame_info.vue @@ -0,0 +1,125 @@ + + diff --git a/app/assets/javascripts/vue_shared/components/source_viewer/queries/blame_data.query.graphql b/app/assets/javascripts/vue_shared/components/source_viewer/queries/blame_data.query.graphql new file mode 100644 index 00000000000000..18a5009030a2dc --- /dev/null +++ b/app/assets/javascripts/vue_shared/components/source_viewer/queries/blame_data.query.graphql @@ -0,0 +1,35 @@ +query getBlameData($fullPath: ID!, $filePath: String!, $fromLine: Int, $toLine: Int) { + project(fullPath: $fullPath) { + repository { + blobs(paths: [$filePath]) { + nodes { + blame(fromLine: $fromLine, toLine: $toLine) { + firstLine + groups { + lineno + span + commit { + message + authoredDate + author { + name + webPath + avatarUrl + } + sha + } + commitData { + authorAvatar + ageMapClass + commitLink + commitAuthorLink + projectBlameLink + timeAgoTooltip + } + } + } + } + } + } + } +} diff --git a/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer_new.vue b/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer_new.vue index c7353ed6785e49..bbdf1e55631544 100644 --- a/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer_new.vue +++ b/app/assets/javascripts/vue_shared/components/source_viewer/source_viewer_new.vue @@ -1,10 +1,13 @@ diff --git a/app/assets/stylesheets/framework/files.scss b/app/assets/stylesheets/framework/files.scss index 613e504c771e1a..aa6f38f1a3a6f8 100644 --- a/app/assets/stylesheets/framework/files.scss +++ b/app/assets/stylesheets/framework/files.scss @@ -507,6 +507,7 @@ span.idiff { } .blame { + background: #fbfafd; position: relative; .tr { -- GitLab