diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-02 15:06:59 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-06-02 15:06:59 +0300 |
commit | e9570ea27e2dc549962b9b318af369e9363fd1c4 (patch) | |
tree | 1a6aabfa0b41df8f6400a7bbcabe0bdb54f10fe7 /app | |
parent | 7e8ecb5c00aae3b7072a5b8ff2c53db03c0bc579 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
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 |