summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/stylesheets/pages/notes.scss5
-rw-r--r--app/controllers/concerns/metrics_dashboard.rb63
-rw-r--r--app/controllers/projects/environments_controller.rb49
-rw-r--r--changelogs/unreleased/31030-when-viewing-comments-occasionally-the-users-profile-picture-will-b.yml5
-rw-r--r--danger/specs/Dangerfile2
-rw-r--r--doc/topics/git/troubleshooting_git.md9
-rw-r--r--lib/gitlab/metrics/dashboard/finder.rb8
-rw-r--r--locale/gitlab.pot24
-rw-r--r--spec/controllers/concerns/metrics_dashboard_spec.rb58
9 files changed, 177 insertions, 46 deletions
diff --git a/app/assets/stylesheets/pages/notes.scss b/app/assets/stylesheets/pages/notes.scss
index f4928627748..21a9f143039 100644
--- a/app/assets/stylesheets/pages/notes.scss
+++ b/app/assets/stylesheets/pages/notes.scss
@@ -355,10 +355,13 @@ $note-form-margin-left: 72px;
}
}
+ .timeline-icon {
+ float: left;
+ }
+
.system-note,
.discussion-filter-note {
.timeline-icon {
- float: left;
display: flex;
align-items: center;
background-color: $white-light;
diff --git a/app/controllers/concerns/metrics_dashboard.rb b/app/controllers/concerns/metrics_dashboard.rb
new file mode 100644
index 00000000000..62efdacb710
--- /dev/null
+++ b/app/controllers/concerns/metrics_dashboard.rb
@@ -0,0 +1,63 @@
+# frozen_string_literal: true
+
+# Provides an action which fetches a metrics dashboard according
+# to the parameters specified by the controller.
+module MetricsDashboard
+ extend ActiveSupport::Concern
+
+ def metrics_dashboard
+ result = dashboard_finder.find(
+ project_for_dashboard,
+ current_user,
+ metrics_dashboard_params
+ )
+
+ if include_all_dashboards?
+ result[:all_dashboards] = dashboard_finder.find_all_paths(project_for_dashboard)
+ end
+
+ respond_to do |format|
+ if result[:status] == :success
+ format.json { render dashboard_success_response(result) }
+ else
+ format.json { render dashboard_error_response(result) }
+ end
+ end
+ end
+
+ private
+
+ # Override in class to provide arguments to the finder.
+ def metrics_dashboard_params
+ {}
+ end
+
+ # Override in class if response requires complete list of
+ # dashboards in addition to requested dashboard body.
+ def include_all_dashboards?
+ false
+ end
+
+ def dashboard_finder
+ ::Gitlab::Metrics::Dashboard::Finder
+ end
+
+ # Project is not defined for group and admin level clusters.
+ def project_for_dashboard
+ defined?(project) ? project : nil
+ end
+
+ def dashboard_success_response(result)
+ {
+ status: :ok,
+ json: result.slice(:all_dashboards, :dashboard, :status)
+ }
+ end
+
+ def dashboard_error_response(result)
+ {
+ status: result[:http_status],
+ json: result.slice(:all_dashboards, :message, :status)
+ }
+ end
+end
diff --git a/app/controllers/projects/environments_controller.rb b/app/controllers/projects/environments_controller.rb
index 841fc343b30..c053ca19a94 100644
--- a/app/controllers/projects/environments_controller.rb
+++ b/app/controllers/projects/environments_controller.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class Projects::EnvironmentsController < Projects::ApplicationController
+ include MetricsDashboard
+
layout 'project'
before_action :authorize_read_environment!
before_action :authorize_create_environment!, only: [:new, :create]
@@ -158,42 +160,6 @@ class Projects::EnvironmentsController < Projects::ApplicationController
end
end
- def metrics_dashboard
- if params[:embedded]
- result = dashboard_finder.find(
- project,
- current_user,
- environment: environment,
- dashboard_path: params[:dashboard],
- **dashboard_params.to_h.symbolize_keys
- )
- else
- result = dashboard_finder.find(
- project,
- current_user,
- environment: environment,
- dashboard_path: params[:dashboard]
- )
-
- result[:all_dashboards] = dashboard_finder.find_all_paths(project)
- end
-
- respond_to do |format|
- if result[:status] == :success
- format.json do
- render status: :ok, json: result.slice(:all_dashboards, :dashboard, :status)
- end
- else
- format.json do
- render(
- status: result[:http_status],
- json: result.slice(:all_dashboards, :message, :status)
- )
- end
- end
- end
- end
-
def search
respond_to do |format|
format.json do
@@ -231,12 +197,15 @@ class Projects::EnvironmentsController < Projects::ApplicationController
params.require([:start, :end])
end
- def dashboard_params
- params.permit(:embedded, :group, :title, :y_label)
+ def metrics_dashboard_params
+ params
+ .permit(:embedded, :group, :title, :y_label)
+ .to_h.symbolize_keys
+ .merge(dashboard_path: params[:dashboard], environment: environment)
end
- def dashboard_finder
- Gitlab::Metrics::Dashboard::Finder
+ def include_all_dashboards?
+ !params[:embedded]
end
def search_environment_names
diff --git a/changelogs/unreleased/31030-when-viewing-comments-occasionally-the-users-profile-picture-will-b.yml b/changelogs/unreleased/31030-when-viewing-comments-occasionally-the-users-profile-picture-will-b.yml
new file mode 100644
index 00000000000..5ff7f31d86b
--- /dev/null
+++ b/changelogs/unreleased/31030-when-viewing-comments-occasionally-the-users-profile-picture-will-b.yml
@@ -0,0 +1,5 @@
+---
+title: Fix broken notes avatar rendering in Chrome 77
+merge_request: 18110
+author:
+type: fixed
diff --git a/danger/specs/Dangerfile b/danger/specs/Dangerfile
index a526bb8adaa..50887c44b3e 100644
--- a/danger/specs/Dangerfile
+++ b/danger/specs/Dangerfile
@@ -1,6 +1,6 @@
# frozen_string_literal: true
-NO_SPECS_LABELS = %w[backstage Documentation QA].freeze
+NO_SPECS_LABELS = %w[backstage documentation QA].freeze
NO_NEW_SPEC_MESSAGE = <<~MSG.freeze
You've made some app changes, but didn't add any tests.
That's OK as long as you're refactoring existing code,
diff --git a/doc/topics/git/troubleshooting_git.md b/doc/topics/git/troubleshooting_git.md
index 14dff7d38b1..5391f6e5ad6 100644
--- a/doc/topics/git/troubleshooting_git.md
+++ b/doc/topics/git/troubleshooting_git.md
@@ -22,8 +22,13 @@ To fix this issue, here are some possible solutions.
### Increase the POST buffer size in Git
-**If pushing over HTTP**, you can try increasing the POST buffer size in Git's
-configuration. Open a terminal and enter:
+**If you're using Git over HTTP instead of SSH**, you can try increasing the POST buffer size in Git's
+configuration.
+
+Example of an error during a clone:
+`fatal: pack has bad object at offset XXXXXXXXX: inflate returned -5`
+
+Open a terminal and enter:
```sh
git config http.postBuffer 52428800
diff --git a/lib/gitlab/metrics/dashboard/finder.rb b/lib/gitlab/metrics/dashboard/finder.rb
index c3169418371..297f109ff81 100644
--- a/lib/gitlab/metrics/dashboard/finder.rb
+++ b/lib/gitlab/metrics/dashboard/finder.rb
@@ -20,13 +20,17 @@ module Gitlab
# @param options - dashboard_path [String] Path at which the
# dashboard can be found. Nil values will
# default to the system dashboard.
- # @param options - group [String] Title of the group
+ # @param options - group [String, Group] Title of the group
# to which a panel might belong. Used by
- # embedded dashboards.
+ # embedded dashboards. If cluster dashboard,
+ # refers to the Group corresponding to the cluster.
# @param options - title [String] Title of the panel.
# Used by embedded dashboards.
# @param options - y_label [String] Y-Axis label of
# a panel. Used by embedded dashboards.
+ # @param options - cluster [Cluster]
+ # @param options - cluster_type [Symbol] The level of
+ # cluster, one of [:admin, :project, :group]
# @return [Hash]
def find(project, user, options = {})
service_for(options)
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index a17d0460967..e94cde289b0 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -14063,15 +14063,30 @@ msgstr ""
msgid "SecurityDashboard|%{firstProject}, %{secondProject}, and %{rest}"
msgstr ""
+msgid "SecurityDashboard|Add a project to your dashboard"
+msgstr ""
+
+msgid "SecurityDashboard|Add or remove projects from your dashboard"
+msgstr ""
+
+msgid "SecurityDashboard|Add projects"
+msgstr ""
+
msgid "SecurityDashboard|Confidence"
msgstr ""
+msgid "SecurityDashboard|Edit dashboard"
+msgstr ""
+
msgid "SecurityDashboard|Hide dismissed"
msgstr ""
msgid "SecurityDashboard|Monitor vulnerabilities in your code"
msgstr ""
+msgid "SecurityDashboard|More information"
+msgstr ""
+
msgid "SecurityDashboard|Pipeline %{pipelineLink} triggered"
msgstr ""
@@ -14081,9 +14096,18 @@ msgstr ""
msgid "SecurityDashboard|Report type"
msgstr ""
+msgid "SecurityDashboard|Return to dashboard"
+msgstr ""
+
+msgid "SecurityDashboard|Security Dashboard"
+msgstr ""
+
msgid "SecurityDashboard|Severity"
msgstr ""
+msgid "SecurityDashboard|The security dashboard displays the latest security findings for projects you wish to monitor. Select \"Edit dashboard\" to add and remove projects."
+msgstr ""
+
msgid "SecurityDashboard|Unable to add %{invalidProjects}"
msgstr ""
diff --git a/spec/controllers/concerns/metrics_dashboard_spec.rb b/spec/controllers/concerns/metrics_dashboard_spec.rb
new file mode 100644
index 00000000000..a71e34fd1ca
--- /dev/null
+++ b/spec/controllers/concerns/metrics_dashboard_spec.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe MetricsDashboard do
+ describe 'GET #metrics_dashboard' do
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:environment) { create(:environment, project: project) }
+
+ before do
+ sign_in(user)
+ project.add_maintainer(user)
+ end
+
+ controller(::ApplicationController) do
+ include MetricsDashboard # rubocop:disable RSpec/DescribedClass
+ end
+
+ let(:json_response) do
+ routes.draw { get "metrics_dashboard" => "anonymous#metrics_dashboard" }
+ response = get :metrics_dashboard, format: :json
+
+ JSON.parse(response.parsed_body)
+ end
+
+ context 'when no parameters are provided' do
+ it 'returns an error json_response' do
+ expect(json_response['status']).to eq('error')
+ end
+ end
+
+ context 'when params are provided' do
+ before do
+ allow(controller).to receive(:project).and_return(project)
+ allow(controller)
+ .to receive(:metrics_dashboard_params)
+ .and_return(environment: environment)
+ end
+
+ it 'returns the specified dashboard' do
+ expect(json_response['dashboard']['dashboard']).to eq('Environment metrics')
+ expect(json_response).not_to have_key('all_dashboards')
+ end
+
+ context 'when parameters are provided and the list of all dashboards is required' do
+ before do
+ allow(controller).to receive(:include_all_dashboards?).and_return(true)
+ end
+
+ it 'returns a dashboard in addition to the list of dashboards' do
+ expect(json_response['dashboard']['dashboard']).to eq('Environment metrics')
+ expect(json_response).to have_key('all_dashboards')
+ end
+ end
+ end
+ end
+end