# frozen_string_literal: true module Projects class MetricsDashboardController < Projects::ApplicationController # Metrics dashboard code is in the process of being decoupled from environments # and is getting moved to this controller. Some code may be duplicated from # app/controllers/projects/environments_controller.rb # See https://gitlab.com/gitlab-org/gitlab/-/issues/226002 for more details. include Gitlab::Utils::StrongMemoize before_action :authorize_metrics_dashboard! before_action do push_frontend_feature_flag(:prometheus_computed_alerts) push_frontend_feature_flag(:disable_metric_dashboard_refresh_rate) end feature_category :metrics def show if environment render 'projects/environments/metrics' elsif default_environment redirect_to project_metrics_dashboard_path( project, # Reverse merge the query parameters so that a query parameter named dashboard_path doesn't # override the dashboard_path path parameter. **permitted_params.to_h.symbolize_keys .merge(environment: default_environment.id) .reverse_merge(request.query_parameters.symbolize_keys) ) else render 'projects/environments/empty_metrics' end end private def permitted_params @permitted_params ||= params.permit(:dashboard_path, :environment, :page) end def environment strong_memoize(:environment) do env = permitted_params[:environment] project.environments.find(env) if env end end def default_environment strong_memoize(:default_environment) do project.default_environment end end end end