Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/pages/projects/merge_requests/page.js')
-rw-r--r--app/assets/javascripts/pages/projects/merge_requests/page.js22
1 files changed, 20 insertions, 2 deletions
diff --git a/app/assets/javascripts/pages/projects/merge_requests/page.js b/app/assets/javascripts/pages/projects/merge_requests/page.js
index 69032455fe3..fb228830c37 100644
--- a/app/assets/javascripts/pages/projects/merge_requests/page.js
+++ b/app/assets/javascripts/pages/projects/merge_requests/page.js
@@ -4,6 +4,7 @@ import initMrNotes from 'ee_else_ce/mr_notes';
import StickyHeader from '~/merge_requests/components/sticky_header.vue';
import { start as startCodeReviewMessaging } from '~/code_review/signals';
import diffsEventHub from '~/diffs/event_hub';
+import { EVT_MR_DIFF_GENERATED } from '~/diffs/constants';
import store from '~/mr_notes/stores';
import initSidebarBundle from '~/sidebar/sidebar_bundle';
import { apolloProvider } from '~/graphql_shared/issuable_client';
@@ -14,11 +15,23 @@ import getStateQuery from './queries/get_state.query.graphql';
Vue.use(VueApollo);
+const tabData = Vue.observable({
+ tabs: [],
+});
+
export function initMrPage() {
initMrNotes();
initShow(store);
initMrMoreDropdown();
startCodeReviewMessaging({ signalBus: diffsEventHub });
+
+ const changesCountBadge = document.querySelector('.js-changes-tab-count');
+ diffsEventHub.$on(EVT_MR_DIFF_GENERATED, (mergeRequestDiffGenerated) => {
+ const { fileCount } = mergeRequestDiffGenerated.diffStatsSummary;
+
+ changesCountBadge.textContent = fileCount;
+ Vue.set(tabData.tabs[tabData.tabs.length - 1], 3, fileCount);
+ });
}
requestIdleCallback(() => {
@@ -38,6 +51,8 @@ requestIdleCallback(() => {
blocksMerge,
} = JSON.parse(data);
+ tabData.tabs = tabs;
+
// eslint-disable-next-line no-new
new Vue({
el,
@@ -48,13 +63,16 @@ requestIdleCallback(() => {
iid,
projectPath,
title,
- tabs,
isFluidLayout: parseBoolean(isFluidLayout),
blocksMerge: parseBoolean(blocksMerge),
sourceProjectPath,
},
render(h) {
- return h(StickyHeader);
+ return h(StickyHeader, {
+ props: {
+ tabs: tabData.tabs,
+ },
+ });
},
});
}