diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-04 09:06:35 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-04 09:06:35 +0000 |
commit | 1f1bdf54e1974f89f3a6ba734ec2c42552e90639 (patch) | |
tree | ee27c4230cf0aa11652cfcb4f4c662bcf758c90b /app | |
parent | 535d167d40638105527bc6c9a86f33d2ffd62743 (diff) | |
download | gitlab-ce-1f1bdf54e1974f89f3a6ba734ec2c42552e90639.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/assets/stylesheets/pages/notes.scss | 5 | ||||
-rw-r--r-- | app/controllers/concerns/metrics_dashboard.rb | 63 | ||||
-rw-r--r-- | app/controllers/projects/environments_controller.rb | 49 |
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 |