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



39
40
41
42
# File 'app/controllers/kanaui/dashboard_controller.rb', line 39

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
# 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

  # 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]
    redirect_to dashboard_index_path(:start_date => @start_date,
                                     :end_date => @end_date,
                                     :name => name,
                                     :smooth => params[:smooth],
                                     :sql_only => params[:sql_only],
                                     :format => params[:format]) and return
  end

  render
end

#reportsObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/controllers/kanaui/dashboard_controller.rb', line 44

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