Show toggle tree button on merge request commits

Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/53019
This commit is contained in:
Phil Hughes 2018-11-20 12:37:57 +00:00
parent 2e3dab3829
commit 93c614ce92
No known key found for this signature in database
GPG key ID: 32245528C52E0F9F
10 changed files with 58 additions and 107 deletions

View file

@ -55,8 +55,6 @@ export default {
diffViewType: state => state.diffs.diffViewType, diffViewType: state => state.diffs.diffViewType,
mergeRequestDiffs: state => state.diffs.mergeRequestDiffs, mergeRequestDiffs: state => state.diffs.mergeRequestDiffs,
mergeRequestDiff: state => state.diffs.mergeRequestDiff, mergeRequestDiff: state => state.diffs.mergeRequestDiff,
latestVersionPath: state => state.diffs.latestVersionPath,
startVersion: state => state.diffs.startVersion,
commit: state => state.diffs.commit, commit: state => state.diffs.commit,
targetBranchName: state => state.diffs.targetBranchName, targetBranchName: state => state.diffs.targetBranchName,
renderOverflowWarning: state => state.diffs.renderOverflowWarning, renderOverflowWarning: state => state.diffs.renderOverflowWarning,
@ -75,24 +73,6 @@ export default {
path: '', path: '',
}; };
}, },
notAllCommentsDisplayed() {
if (this.commit) {
return __('Only comments from the following commit are shown below');
} else if (this.startVersion) {
return __(
"Not all comments are displayed because you're comparing two versions of the diff.",
);
}
return __(
"Not all comments are displayed because you're viewing an old version of the diff.",
);
},
showLatestVersion() {
if (this.commit) {
return __('Show latest version of the diff');
}
return __('Show latest version');
},
canCurrentUserFork() { canCurrentUserFork() {
return this.currentUser.can_fork === true && this.currentUser.can_create_merge_request; return this.currentUser.can_fork === true && this.currentUser.can_create_merge_request;
}, },
@ -184,10 +164,8 @@ export default {
<div v-if="isLoading" class="loading"><gl-loading-icon /></div> <div v-if="isLoading" class="loading"><gl-loading-icon /></div>
<div v-else id="diffs" :class="{ active: shouldShow }" class="diffs tab-pane"> <div v-else id="diffs" :class="{ active: shouldShow }" class="diffs tab-pane">
<compare-versions <compare-versions
v-if="showCompareVersions"
:merge-request-diffs="mergeRequestDiffs" :merge-request-diffs="mergeRequestDiffs"
:merge-request-diff="mergeRequestDiff" :merge-request-diff="mergeRequestDiff"
:start-version="startVersion"
:target-branch="targetBranch" :target-branch="targetBranch"
/> />
@ -199,34 +177,23 @@ export default {
:email-patch-path="emailPatchPath" :email-patch-path="emailPatchPath"
/> />
<div
v-if="commit || startVersion || (mergeRequestDiff && !mergeRequestDiff.latest)"
class="mr-version-controls"
>
<div class="content-block comments-disabled-notif clearfix">
<i class="fa fa-info-circle"></i> {{ notAllCommentsDisplayed }}
<div class="pull-right">
<a :href="latestVersionPath" class="btn btn-sm"> {{ showLatestVersion }} </a>
</div>
</div>
</div>
<commit-widget v-if="commit" :commit="commit" />
<div <div
:data-can-create-note="getNoteableData.current_user.can_create_note" :data-can-create-note="getNoteableData.current_user.can_create_note"
class="files d-flex prepend-top-default" class="files d-flex prepend-top-default"
> >
<div v-show="showTreeList" class="diff-tree-list"><tree-list /></div> <div v-show="showTreeList" class="diff-tree-list"><tree-list /></div>
<div v-if="diffFiles.length > 0" class="diff-files-holder"> <div class="diff-files-holder">
<diff-file <commit-widget v-if="commit" :commit="commit" />
v-for="file in diffFiles" <template v-if="diffFiles.length > 0">
:key="file.newPath" <diff-file
:file="file" v-for="file in diffFiles"
:can-current-user-fork="canCurrentUserFork" :key="file.newPath"
/> :file="file"
:can-current-user-fork="canCurrentUserFork"
/>
</template>
<no-changes v-else />
</div> </div>
<no-changes v-else />
</div> </div>
</div> </div>
</div> </div>

View file

@ -28,7 +28,7 @@ export default {
</script> </script>
<template> <template>
<div class="info-well prepend-top-default"> <div class="info-well w-100">
<div class="well-segment"> <div class="well-segment">
<ul class="blob-commit-info"> <ul class="blob-commit-info">
<commit-item :commit="commit" /> <commit-item :commit="commit" />

View file

@ -1,6 +1,6 @@
<script> <script>
import { mapActions, mapGetters, mapState } from 'vuex'; import { mapActions, mapGetters, mapState } from 'vuex';
import { GlTooltipDirective } from '@gitlab/ui'; import { GlTooltipDirective, GlLink, GlButton } from '@gitlab/ui';
import { __ } from '~/locale'; import { __ } from '~/locale';
import { getParameterValues, mergeUrlParams } from '~/lib/utils/url_utility'; import { getParameterValues, mergeUrlParams } from '~/lib/utils/url_utility';
import Icon from '~/vue_shared/components/icon.vue'; import Icon from '~/vue_shared/components/icon.vue';
@ -10,6 +10,8 @@ export default {
components: { components: {
CompareVersionsDropdown, CompareVersionsDropdown,
Icon, Icon,
GlLink,
GlButton,
}, },
directives: { directives: {
GlTooltip: GlTooltipDirective, GlTooltip: GlTooltipDirective,
@ -20,13 +22,9 @@ export default {
required: true, required: true,
}, },
mergeRequestDiff: { mergeRequestDiff: {
type: Object,
required: true,
},
startVersion: {
type: Object, type: Object,
required: false, required: false,
default: null, default: () => ({}),
}, },
targetBranch: { targetBranch: {
type: Object, type: Object,
@ -35,7 +33,7 @@ export default {
}, },
}, },
computed: { computed: {
...mapState('diffs', ['commit', 'showTreeList']), ...mapState('diffs', ['commit', 'showTreeList', 'startVersion', 'latestVersionPath']),
...mapGetters('diffs', ['isInlineView', 'isParallelView', 'hasCollapsedFile']), ...mapGetters('diffs', ['isInlineView', 'isParallelView', 'hasCollapsedFile']),
comparableDiffs() { comparableDiffs() {
return this.mergeRequestDiffs.slice(1); return this.mergeRequestDiffs.slice(1);
@ -102,7 +100,18 @@ export default {
class="mr-version-compare-dropdown" class="mr-version-compare-dropdown"
/> />
</div> </div>
<div v-else-if="commit">
{{ __('Viewing commit') }}
<gl-link :href="commit.commit_url" class="monospace">{{ commit.short_id }}</gl-link>
</div>
<div class="inline-parallel-buttons d-none d-md-flex ml-auto"> <div class="inline-parallel-buttons d-none d-md-flex ml-auto">
<gl-button
v-if="commit || startVersion"
:href="latestVersionPath"
class="append-right-8 js-latest-version"
>
{{ __('Show latest version') }}
</gl-button>
<a v-show="hasCollapsedFile" class="btn btn-default append-right-8" @click="expandAllFiles"> <a v-show="hasCollapsedFile" class="btn btn-default append-right-8" @click="expandAllFiles">
{{ __('Expand all') }} {{ __('Expand all') }}
</a> </a>

View file

@ -22,7 +22,6 @@
.detail-page-header, .detail-page-header,
.page-content-header, .page-content-header,
.commit-box, .commit-box,
.info-well,
.commit-ci-menu, .commit-ci-menu,
.files-changed-inner, .files-changed-inner,
.limited-header-width, .limited-header-width,

View file

@ -717,6 +717,7 @@
.mr-version-menus-container { .mr-version-menus-container {
display: flex; display: flex;
align-items: center; align-items: center;
flex-wrap: wrap;
padding: 16px; padding: 16px;
z-index: 199; z-index: 199;
white-space: nowrap; white-space: nowrap;

View file

@ -0,0 +1,5 @@
---
title: Show tree collapse button for merge request commit diffs
merge_request:
author:
type: fixed

View file

@ -4252,12 +4252,6 @@ msgstr ""
msgid "None" msgid "None"
msgstr "" msgstr ""
msgid "Not all comments are displayed because you're comparing two versions of the diff."
msgstr ""
msgid "Not all comments are displayed because you're viewing an old version of the diff."
msgstr ""
msgid "Not allowed to merge" msgid "Not allowed to merge"
msgstr "" msgstr ""
@ -4395,9 +4389,6 @@ msgstr ""
msgid "Only admins" msgid "Only admins"
msgstr "" msgstr ""
msgid "Only comments from the following commit are shown below"
msgstr ""
msgid "Only mirror protected branches" msgid "Only mirror protected branches"
msgstr "" msgstr ""
@ -5764,9 +5755,6 @@ msgstr ""
msgid "Show latest version" msgid "Show latest version"
msgstr "" msgstr ""
msgid "Show latest version of the diff"
msgstr ""
msgid "Show parent pages" msgid "Show parent pages"
msgstr "" msgstr ""
@ -7053,6 +7041,9 @@ msgstr ""
msgid "View the documentation" msgid "View the documentation"
msgstr "" msgstr ""
msgid "Viewing commit"
msgstr ""
msgid "Visibility and access controls" msgid "Visibility and access controls"
msgstr "" msgstr ""

View file

@ -66,7 +66,6 @@ describe 'Merge request > User sees versions', :js do
it 'shows comments that were last relevant at that version' do it 'shows comments that were last relevant at that version' do
expect(page).to have_content '5 changed files' expect(page).to have_content '5 changed files'
expect(page).to have_content 'Not all comments are displayed'
position = Gitlab::Diff::Position.new( position = Gitlab::Diff::Position.new(
old_path: ".gitmodules", old_path: ".gitmodules",
@ -112,7 +111,6 @@ describe 'Merge request > User sees versions', :js do
) )
expect(page).to have_content '4 changed files' expect(page).to have_content '4 changed files'
expect(page).to have_content '15 additions 6 deletions' expect(page).to have_content '15 additions 6 deletions'
expect(page).to have_content 'Not all comments are displayed'
position = Gitlab::Diff::Position.new( position = Gitlab::Diff::Position.new(
old_path: ".gitmodules", old_path: ".gitmodules",

View file

@ -3,7 +3,6 @@ import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper
import { TEST_HOST } from 'spec/test_constants'; import { TEST_HOST } from 'spec/test_constants';
import App from '~/diffs/components/app.vue'; import App from '~/diffs/components/app.vue';
import createDiffsStore from '../create_diffs_store'; import createDiffsStore from '../create_diffs_store';
import getDiffWithCommit from '../mock_data/diff_with_commit';
describe('diffs/components/app', () => { describe('diffs/components/app', () => {
const oldMrTabs = window.mrTabs; const oldMrTabs = window.mrTabs;
@ -40,43 +39,4 @@ describe('diffs/components/app', () => {
it('does not show commit info', () => { it('does not show commit info', () => {
expect(vm.$el).not.toContainElement('.blob-commit-info'); expect(vm.$el).not.toContainElement('.blob-commit-info');
}); });
it('shows comments message, with commit', done => {
vm.$store.state.diffs.commit = getDiffWithCommit().commit;
vm.$nextTick()
.then(() => {
expect(vm.$el).toContainText('Only comments from the following commit are shown below');
expect(vm.$el).toContainElement('.blob-commit-info');
})
.then(done)
.catch(done.fail);
});
it('shows comments message, with old mergeRequestDiff', done => {
vm.$store.state.diffs.mergeRequestDiff = { latest: false };
vm.$store.state.diffs.targetBranch = 'master';
vm.$nextTick()
.then(() => {
expect(vm.$el).toContainText(
"Not all comments are displayed because you're viewing an old version of the diff.",
);
})
.then(done)
.catch(done.fail);
});
it('shows comments message, with startVersion', done => {
vm.$store.state.diffs.startVersion = 'test';
vm.$nextTick()
.then(() => {
expect(vm.$el).toContainText(
"Not all comments are displayed because you're comparing two versions of the diff.",
);
})
.then(done)
.catch(done.fail);
});
}); });

View file

@ -3,6 +3,7 @@ import CompareVersionsComponent from '~/diffs/components/compare_versions.vue';
import store from '~/mr_notes/stores'; import store from '~/mr_notes/stores';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper'; import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import diffsMockData from '../mock_data/merge_request_diffs'; import diffsMockData from '../mock_data/merge_request_diffs';
import getDiffWithCommit from '../mock_data/diff_with_commit';
describe('CompareVersions', () => { describe('CompareVersions', () => {
let vm; let vm;
@ -122,4 +123,24 @@ describe('CompareVersions', () => {
expect(vm.isWhitespaceVisible()).toBe(true); expect(vm.isWhitespaceVisible()).toBe(true);
}); });
}); });
describe('commit', () => {
beforeEach(done => {
vm.$store.state.diffs.commit = getDiffWithCommit().commit;
vm.mergeRequestDiffs = [];
vm.$nextTick(done);
});
it('renders latest version button', () => {
expect(vm.$el.querySelector('.js-latest-version').textContent.trim()).toBe(
'Show latest version',
);
});
it('renders short commit ID', () => {
expect(vm.$el.textContent).toContain('Viewing commit');
expect(vm.$el.textContent).toContain(vm.commit.short_id);
});
});
}); });