summaryrefslogtreecommitdiff
path: root/app/helpers/groups/observability_helper.rb
blob: 26caac4ce7f6a6215781c7320a28020f5df190b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# frozen_string_literal: true

module Groups
  module ObservabilityHelper
    ACTION_TO_PATH = {
      'dashboards' => {
        path: '/',
        title: -> { _('Dashboards') }
      },
      'manage' => {
        path: '/dashboards',
        title: -> { _('Manage Dashboards') }
      },
      'explore' => {
        path: '/explore',
        title: -> { _('Explore') }
      }
    }.freeze

    def observability_iframe_src(group)
      # Format: https://observe.gitlab.com/GROUP_ID

      # When running Observability UI in standalone mode (i.e. not backed by Observability Backend)
      # the group-id is not required. This is mostly used for local dev
      base_url = ENV['STANDALONE_OBSERVABILITY_UI'] == 'true' ? observability_url : "#{observability_url}/-/#{group.id}"

      sanitized_path = if params[:observability_path] && sanitize(params[:observability_path]) != ''
                         CGI.unescapeHTML(sanitize(params[:observability_path]))
                       else
                         observability_config_for(params).fetch(:path)
                       end

      "#{base_url}#{sanitized_path}"
    end

    def observability_page_title
      observability_config_for(params).fetch(:title).call
    end

    private

    def observability_url
      Gitlab::Observability.observability_url
    end

    def observability_config_for(params)
      ACTION_TO_PATH.fetch(params[:action], ACTION_TO_PATH['dashboards'])
    end
  end
end