debian-mirror-gitlab/app/controllers/projects/product_analytics_controller.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

60 lines
1.5 KiB
Ruby
Raw Normal View History

2020-10-24 23:57:45 +05:30
# frozen_string_literal: true
class Projects::ProductAnalyticsController < Projects::ApplicationController
before_action :feature_enabled!
before_action :authorize_read_product_analytics!
before_action :tracker_variables, only: [:setup, :test]
2021-01-03 14:25:43 +05:30
feature_category :product_analytics
2020-10-24 23:57:45 +05:30
def index
@events = product_analytics_events.order_by_time.page(params[:page])
end
def setup
end
def test
@event = product_analytics_events.try(:first)
end
def graphs
@graphs = []
@timerange = 30
requested_graphs = %w(platform os_timezone br_lang doc_charset)
requested_graphs.each do |graph|
@graphs << ProductAnalytics::BuildGraphService
.new(project, { graph: graph, timerange: @timerange })
.execute
end
2020-11-24 15:15:51 +05:30
@activity_graph = ProductAnalytics::BuildActivityGraphService
.new(project, { timerange: @timerange })
.execute
2020-10-24 23:57:45 +05:30
end
private
def product_analytics_events
@project.product_analytics_events
end
def tracker_variables
# We use project id as Snowplow appId
@project_id = @project.id.to_s
# Snowplow remembers values like appId and platform between reloads.
# That is why we have to rename the tracker with a random integer.
@random = rand(999999)
# Generate random platform every time a tracker is rendered.
@platform = %w(web mob app)[(@random % 3)]
end
def feature_enabled!
2022-07-16 23:28:13 +05:30
render_404 unless Feature.enabled?(:product_analytics, @project)
2020-10-24 23:57:45 +05:30
end
end