From de49ab37b096c3e9378b30ada1361178a982d011 Mon Sep 17 00:00:00 2001 From: Samantha Ming Date: Wed, 11 Nov 2020 20:47:38 -0800 Subject: [PATCH] Collapse approval rules and move it under reviewer Issue: https://gitlab.com/gitlab-org/gitlab/-/issues/232817 --- .../merge_requests/creations_controller.rb | 5 +++ .../projects/merge_requests_controller.rb | 2 + app/views/shared/issuable/_form.html.haml | 2 +- .../shared/issuable/form/_metadata.html.haml | 3 +- .../_metadata_issuable_reviewer.html.haml | 4 +- .../mr_collapsed_approval_rules.yml | 8 ++++ .../approvals/components/mr_edit/app.vue | 41 ++++++++++++++++++- .../shared/issuable/_approvals.html.haml | 11 ++--- .../user_creates_merge_request_spec.rb | 2 + .../user_edits_approval_rules_mr_spec.rb | 5 +++ .../user_sets_approval_rules_spec.rb | 4 ++ .../merge_request/user_sets_approvers_spec.rb | 30 ++++++++++++++ .../user_resets_approvers_spec.rb | 2 + .../settings/merge_requests_settings_spec.rb | 6 +-- .../helpers/feature_approval_helper.rb | 7 +++- .../issuable/_approvals.html.haml_spec.rb | 3 +- locale/gitlab.pot | 3 ++ 17 files changed, 124 insertions(+), 14 deletions(-) create mode 100644 config/feature_flags/development/mr_collapsed_approval_rules.yml diff --git a/app/controllers/projects/merge_requests/creations_controller.rb b/app/controllers/projects/merge_requests/creations_controller.rb index 3e077c1af3772c..453928e251f424 100644 --- a/app/controllers/projects/merge_requests/creations_controller.rb +++ b/app/controllers/projects/merge_requests/creations_controller.rb @@ -11,6 +11,11 @@ class Projects::MergeRequests::CreationsController < Projects::MergeRequests::Ap before_action :apply_diff_view_cookie!, only: [:diffs, :diff_for_path] before_action :build_merge_request, except: [:create] + before_action do + push_frontend_feature_flag(:merge_request_reviewers, @project) + push_frontend_feature_flag(:mr_collapsed_approval_rules, @project) + end + def new define_new_vars end diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 627d578643f31e..c2bb441d640e18 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -49,6 +49,8 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo before_action do push_frontend_feature_flag(:vue_issuable_sidebar, @project.group) + push_frontend_feature_flag(:merge_request_reviewers, @project) + push_frontend_feature_flag(:mr_collapsed_approval_rules, @project) end around_action :allow_gitaly_ref_name_caching, only: [:index, :show, :discussions] diff --git a/app/views/shared/issuable/_form.html.haml b/app/views/shared/issuable/_form.html.haml index c0aba0eef7f98a..16d9d7dae5a7e4 100644 --- a/app/views/shared/issuable/_form.html.haml +++ b/app/views/shared/issuable/_form.html.haml @@ -32,7 +32,7 @@ = form.label :confidential, class: 'form-check-label' do This issue is confidential and should only be visible to team members with at least Reporter access. -= render 'shared/issuable/form/metadata', issuable: issuable, form: form, project: project += render 'shared/issuable/form/metadata', issuable: issuable, form: form, project: project, presenter: presenter = render_if_exists 'shared/issuable/approvals', issuable: issuable, presenter: presenter, form: form diff --git a/app/views/shared/issuable/form/_metadata.html.haml b/app/views/shared/issuable/form/_metadata.html.haml index 459eb112e4fd6b..366e819d252c4c 100644 --- a/app/views/shared/issuable/form/_metadata.html.haml +++ b/app/views/shared/issuable/form/_metadata.html.haml @@ -1,5 +1,6 @@ - project = local_assigns.fetch(:project) - issuable = local_assigns.fetch(:issuable) +- presenter = local_assigns.fetch(:presenter) - return unless can?(current_user, :"admin_#{issuable.to_ability_name}", issuable.project) @@ -14,7 +15,7 @@ - if issuable.allows_reviewers? .form-group.row.merge-request-reviewer - = render "shared/issuable/form/metadata_issuable_reviewer", issuable: issuable, form: form, has_due_date: has_due_date + = render "shared/issuable/form/metadata_issuable_reviewer", issuable: issuable, form: form, has_due_date: has_due_date, presenter: presenter = render_if_exists "shared/issuable/form/epic", issuable: issuable, form: form, project: project diff --git a/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml b/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml index 5ff3a6781ad823..a4e2ce035cc79a 100644 --- a/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml +++ b/app/views/shared/issuable/form/_metadata_issuable_reviewer.html.haml @@ -1,5 +1,5 @@ = form.label :reviewer_id, issuable.allows_multiple_reviewers? ? _('Reviewers') : _('Reviewer'), class: "col-form-label #{has_due_date ? "col-md-2 col-lg-4" : "col-sm-2"}" -.col-sm-10{ class: ("col-md-8" if has_due_date) } +.col-sm-10.gl-mb-2{ class: ("col-md-8" if has_due_date) } .issuable-form-select-holder.selectbox - issuable.reviewers.each do |reviewer| = hidden_field_tag "#{issuable.to_ability_name}[reviewer_ids][]", reviewer.id, id: nil, data: { meta: reviewer.name, avatar_url: reviewer.avatar_url, name: reviewer.name, username: reviewer.username } @@ -8,3 +8,5 @@ = hidden_field_tag "#{issuable.to_ability_name}[reviewer_ids][]", 0, id: nil, data: { meta: '' } = dropdown_tag(users_dropdown_label(issuable.reviewers), options: reviewers_dropdown_options(issuable.to_ability_name)) + - if Feature.enabled?(:mr_collapsed_approval_rules, @project) + = render_if_exists 'shared/issuable/approver_suggestion', issuable: issuable, presenter: presenter diff --git a/config/feature_flags/development/mr_collapsed_approval_rules.yml b/config/feature_flags/development/mr_collapsed_approval_rules.yml new file mode 100644 index 00000000000000..5fca48ddc3ab86 --- /dev/null +++ b/config/feature_flags/development/mr_collapsed_approval_rules.yml @@ -0,0 +1,8 @@ +--- +name: mr_collapsed_approval_rules +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/47475 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/284052 +milestone: '13.6' +type: development +group: group::source code +default_enabled: false diff --git a/ee/app/assets/javascripts/approvals/components/mr_edit/app.vue b/ee/app/assets/javascripts/approvals/components/mr_edit/app.vue index 68c9db7d3c4c57..dd5fff61b0f95e 100644 --- a/ee/app/assets/javascripts/approvals/components/mr_edit/app.vue +++ b/ee/app/assets/javascripts/approvals/components/mr_edit/app.vue @@ -1,19 +1,58 @@