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>2019-10-04 12:06:35 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-04 12:06:35 +0300
commit1f1bdf54e1974f89f3a6ba734ec2c42552e90639 (patch)
treeee27c4230cf0aa11652cfcb4f4c662bcf758c90b /app
parent535d167d40638105527bc6c9a86f33d2ffd62743 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-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
3 files changed, 76 insertions, 41 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