Class: Kanaui::DashboardController

Inherits:
EngineController show all
Defined in:
app/controllers/kanaui/dashboard_controller.rb

Instance Method Summary collapse

Methods inherited from EngineController

#current_tenant_user, #get_layout, #options_for_klient

Instance Method Details

#available_reportsObject

Not used anymore as reports are pulled from index



48
49
50
51
# File 'app/controllers/kanaui/dashboard_controller.rb', line 48

def available_reports
  available_reports = Kanaui::DashboardHelper::DashboardApi.available_reports(options_for_klient)
  render :json => available_reports
end

#indexObject

Load the dashboard by rendering the view and executing the javascript that will call the reports and available_reports endpoints below.



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
# File 'app/controllers/kanaui/dashboard_controller.rb', line 8

def index
  raw_reports = Kanaui::DashboardHelper::DashboardApi.available_reports(options_for_klient)

  @raw_name = (params[:name] || '').split('^')[0]

  @end_date = params[:end_date] || Date.today.to_s

  @available_start_dates = start_date_options
  @start_date = params[:start_date] || (params[:delta_days].present? ? (@end_date.to_date - params[:delta_days].to_i.day).to_s : @available_start_dates['Last 6 months'])

  @reports = JSON.parse(raw_reports)
  @report = current_report(@reports) || {}

  query = build_slice_and_dice_query

  # get columns visibility from query parameters to be used by tables
  @visible_columns = params[:columns]

  # Redirect also in case the dates have been updated to avoid any confusion in the view
  if query.present? || params[:start_date].blank? || params[:end_date].blank?
    # TODO Make metrics configurable
    name = query.present? ? "#{params[:name]}#{query}^metric:count" : params[:name]
    query_params = {:start_date => @start_date,
                    :end_date => @end_date,
                    :name => name,
                    :smooth => params[:smooth],
                    :sql_only => params[:sql_only],
                    :format => params[:format]}

    # Test only
    query_params[:fake] = params[:fake] unless params[:fake].blank?
    query_params[:type] = params[:type] unless params[:type].blank?

    redirect_to dashboard_index_path(query_params) and return
  end

  params.permit!
end

#reportsObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/controllers/kanaui/dashboard_controller.rb', line 53

def reports
  format = params[:format] || 'json'
  raw_reports = fetch_reports(format)

  if format == 'json' && params[:sql_only] != 'true'
    reports = JSON.parse(raw_reports)

    # Remove reports with empty data
    reports.reject! do |report|
      reject = false
      (report['data'] || []).each { |data| reject = true if (data['values'] || []).empty? && data['value'].blank? }
      reject
    end
  else
    reports = raw_reports
  end
  render :json => reports
end