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
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-02 15:06:59 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-02 15:06:59 +0300
commite9570ea27e2dc549962b9b318af369e9363fd1c4 (patch)
tree1a6aabfa0b41df8f6400a7bbcabe0bdb54f10fe7 /app
parent7e8ecb5c00aae3b7072a5b8ff2c53db03c0bc579 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/analytics/shared/constants.js23
-rw-r--r--app/assets/javascripts/sidebar/components/assignees/sidebar_participant.vue6
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue12
-rw-r--r--app/assets/javascripts/vue_shared/components/user_select/user_select.vue2
-rw-r--r--app/controllers/projects/merge_requests_controller.rb1
-rw-r--r--app/views/shared/projects/_project.html.haml16
6 files changed, 36 insertions, 24 deletions
diff --git a/app/assets/javascripts/analytics/shared/constants.js b/app/assets/javascripts/analytics/shared/constants.js
index c98cf90f406..e9d6d121e6d 100644
--- a/app/assets/javascripts/analytics/shared/constants.js
+++ b/app/assets/javascripts/analytics/shared/constants.js
@@ -1,4 +1,5 @@
-import { masks } from '~/lib/dateformat';
+import dateFormat, { masks } from '~/lib/dateformat';
+import { nDaysBefore, getStartOfDay } from '~/lib/utils/datetime_utility';
import { s__ } from '~/locale';
import { helpPagePath } from '~/helpers/help_page_helper';
@@ -13,6 +14,10 @@ export const dateFormats = {
month: 'mmmm',
};
+const startOfToday = getStartOfDay(new Date(), { utc: true });
+const last180Days = nDaysBefore(startOfToday, DATE_RANGE_LIMIT, { utc: true });
+const formatDateParam = (d) => dateFormat(d, dateFormats.isoDate, true);
+
export const METRIC_POPOVER_LABEL = s__('ValueStreamAnalytics|View details');
export const KEY_METRICS = {
@@ -46,6 +51,12 @@ export const VULNERABILITY_METRICS = {
HIGH: VULNERABILITY_HIGH_TYPE,
};
+export const MERGE_REQUEST_THROUGHPUT_TYPE = 'merge_request_throughput';
+
+export const MERGE_REQUEST_METRICS = {
+ THROUGHPUT: MERGE_REQUEST_THROUGHPUT_TYPE,
+};
+
export const METRIC_TOOLTIPS = {
[DORA_METRICS.DEPLOYMENT_FREQUENCY]: {
description: s__(
@@ -121,6 +132,16 @@ export const METRIC_TOOLTIPS = {
projectLink: '-/security/vulnerability_report',
docsLink: helpPagePath('user/application_security/vulnerability_report/index'),
},
+ [MERGE_REQUEST_METRICS.THROUGHPUT]: {
+ description: s__('ValueStreamAnalytics|The number of merge requests merged by month.'),
+ groupLink: '-/analytics/productivity_analytics',
+ projectLink: `-/analytics/merge_request_analytics?start_date=${formatDateParam(
+ last180Days,
+ )}&end_date=${formatDateParam(startOfToday)}`,
+ docsLink: helpPagePath('user/analytics/merge_request_analytics', {
+ anchor: 'view-the-number-of-merge-requests-in-a-date-range',
+ }),
+ },
};
// TODO: Remove this once the migration to METRIC_TOOLTIPS is complete
diff --git a/app/assets/javascripts/sidebar/components/assignees/sidebar_participant.vue b/app/assets/javascripts/sidebar/components/assignees/sidebar_participant.vue
index c61c02c8b3a..ea9702258b7 100644
--- a/app/assets/javascripts/sidebar/components/assignees/sidebar_participant.vue
+++ b/app/assets/javascripts/sidebar/components/assignees/sidebar_participant.vue
@@ -24,6 +24,11 @@ export default {
required: false,
default: TYPE_ISSUE,
},
+ selected: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
},
computed: {
isBusy() {
@@ -53,6 +58,7 @@ export default {
name="warning-solid"
aria-hidden="true"
class="merge-icon"
+ :class="{ 'gl-left-6!': selected }"
:size="12"
/>
<gl-badge v-if="isBusy" size="sm" variant="warning" class="gl-ml-2">
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue
index af036c01032..e4e81a5e2d1 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue
@@ -3,7 +3,6 @@ import { GlButton } from '@gitlab/ui';
import { s__ } from '~/locale';
import notesEventHub from '~/notes/event_hub';
import BoldText from '~/vue_merge_request_widget/components/bold_text.vue';
-import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import StateContainer from '../state_container.vue';
const message = s__('mrWidget|%{boldStart}Merge blocked:%{boldEnd} all threads must be resolved.');
@@ -16,7 +15,6 @@ export default {
GlButton,
StateContainer,
},
- mixins: [glFeatureFlagsMixin()],
props: {
mr: {
type: Object,
@@ -52,16 +50,6 @@ export default {
>
{{ s__('mrWidget|Go to first unresolved thread') }}
</gl-button>
- <gl-button
- v-if="mr.createIssueToResolveDiscussionsPath && !glFeatures.hideCreateIssueResolveAll"
- :href="mr.createIssueToResolveDiscussionsPath"
- class="js-create-issue gl-align-self-start gl-vertical-align-top"
- size="small"
- variant="confirm"
- category="secondary"
- >
- {{ s__('mrWidget|Resolve all with new issue') }}
- </gl-button>
</template>
</state-container>
</template>
diff --git a/app/assets/javascripts/vue_shared/components/user_select/user_select.vue b/app/assets/javascripts/vue_shared/components/user_select/user_select.vue
index abd3575d020..ac4d1517d52 100644
--- a/app/assets/javascripts/vue_shared/components/user_select/user_select.vue
+++ b/app/assets/javascripts/vue_shared/components/user_select/user_select.vue
@@ -345,7 +345,7 @@ export default {
data-testid="selected-participant"
@click.native.capture.stop="unselect(item.username)"
>
- <sidebar-participant :user="item" :issuable-type="issuableType" />
+ <sidebar-participant :user="item" :issuable-type="issuableType" selected />
</gl-dropdown-item>
<template v-if="showCurrentUser">
<gl-dropdown-divider />
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 4423929e48b..0ce52f75913 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -49,7 +49,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
push_frontend_feature_flag(:realtime_approvals, project)
push_frontend_feature_flag(:saved_replies, current_user)
push_frontend_feature_flag(:code_quality_inline_drawer, project)
- push_frontend_feature_flag(:hide_create_issue_resolve_all, project)
push_frontend_feature_flag(:auto_merge_labels_mr_widget, project)
push_force_frontend_feature_flag(:summarize_my_code_review, summarize_my_code_review_enabled?)
push_frontend_feature_flag(:mr_activity_filters, current_user)
diff --git a/app/views/shared/projects/_project.html.haml b/app/views/shared/projects/_project.html.haml
index bc07c3f4370..e09736cad6c 100644
--- a/app/views/shared/projects/_project.html.haml
+++ b/app/views/shared/projects/_project.html.haml
@@ -9,7 +9,6 @@
- compact_mode = false unless local_assigns[:compact_mode] == true
- show_last_commit_as_description = false unless local_assigns[:show_last_commit_as_description] == true && can_show_last_commit_in_list?(project)
- css_class = "gl-sm-display-flex gl-align-items-center gl-vertical-align-middle!" if project.description.blank? && !show_last_commit_as_description
-- cache_key = project_list_cache_key(project, pipeline_status: pipeline_status)
- updated_tooltip = time_ago_with_tooltip(project.last_activity_date)
- show_pipeline_status_icon = pipeline_status && can?(current_user, :read_cross_project) && project.pipeline_status.has_status? && can?(current_user, :read_build, project)
- last_pipeline = last_pipeline_from_status_cache(project) if show_pipeline_status_icon
@@ -17,14 +16,13 @@
- css_metadata_classes = "gl-display-flex gl-align-items-center gl-ml-5 gl-reset-color! icon-wrapper has-tooltip"
%li.project-row
- = cache(cache_key) do
- - if avatar
- .project-cell.gl-w-11
- = link_to project_path(project), class: dom_class(project) do
- - if project.creator && use_creator_avatar
- = render Pajamas::AvatarComponent.new(project.creator, size: 48, alt: '', class: 'gl-mr-5')
- - else
- = render Pajamas::AvatarComponent.new(project, size: 48, alt: '', class: 'gl-mr-5')
+ - if avatar
+ .project-cell.gl-w-11
+ = link_to project_path(project), class: dom_class(project) do
+ - if project.creator && use_creator_avatar
+ = render Pajamas::AvatarComponent.new(project.creator, size: 48, alt: '', class: 'gl-mr-5')
+ - else
+ = render Pajamas::AvatarComponent.new(project, size: 48, alt: '', class: 'gl-mr-5')
.project-cell{ class: css_class }
.project-details.gl-pr-9.gl-sm-pr-0.gl-w-full.gl-display-flex.gl-flex-direction-column{ data: { qa_selector: 'project_content', qa_project_name: project.name } }
.gl-display-flex.gl-align-items-center.gl-flex-wrap