2020-08-04 14:09:49 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Projects
|
|
|
|
module Metrics
|
|
|
|
module Dashboards
|
|
|
|
class BuilderController < Projects::ApplicationController
|
|
|
|
before_action :authorize_metrics_dashboard!
|
|
|
|
|
|
|
|
def panel_preview
|
|
|
|
respond_to do |format|
|
2020-08-05 11:09:59 -04:00
|
|
|
format.json do
|
|
|
|
if rendered_panel.success?
|
|
|
|
render json: rendered_panel.payload
|
|
|
|
else
|
|
|
|
render json: { message: rendered_panel.message }, status: :unprocessable_entity
|
|
|
|
end
|
|
|
|
end
|
2020-08-04 14:09:49 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2020-08-05 11:09:59 -04:00
|
|
|
def rendered_panel
|
|
|
|
@panel_preview ||= ::Metrics::Dashboard::PanelPreviewService.new(project, panel_yaml, environment).execute
|
|
|
|
end
|
|
|
|
|
|
|
|
def panel_yaml
|
|
|
|
params.require(:panel_yaml)
|
|
|
|
end
|
|
|
|
|
|
|
|
def environment
|
|
|
|
@environment ||=
|
|
|
|
if params[:environment]
|
|
|
|
project.environments.find(params[:environment])
|
|
|
|
else
|
|
|
|
project.default_environment
|
|
|
|
end
|
2020-08-04 14:09:49 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|