Class: Kanaui::DashboardController
- Inherits:
-
EngineController
- Object
- ApplicationController
- EngineController
- Kanaui::DashboardController
- Defined in:
- app/controllers/kanaui/dashboard_controller.rb
Instance Method Summary collapse
-
#available_reports ⇒ Object
Not used anymore as reports are pulled from index.
-
#index ⇒ Object
Load the dashboard by rendering the view and executing the javascript that will call the reports and available_reports endpoints below.
- #reports ⇒ Object
Methods inherited from EngineController
#as_string, #as_string_from_response, #current_tenant_user, #dashboard_reports_json_request?, #get_layout, #json_request?, #log_rescue_error, #options_for_klient
Instance Method Details
#available_reports ⇒ Object
Not used anymore as reports are pulled from index
69 70 71 72 |
# File 'app/controllers/kanaui/dashboard_controller.rb', line 69 def available_reports available_reports = Kanaui::DashboardHelper::DashboardApi.available_reports() render json: available_reports end |
#index ⇒ Object
Load the dashboard by rendering the view and executing the javascript that will call the reports and available_reports endpoints below.
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/controllers/kanaui/dashboard_controller.rb', line 9 def index raw_reports = Kanaui::DashboardHelper::DashboardApi.available_reports() @raw_name = (params[:name] || '').split('^')[0] @end_date = params[:end_date] || Time.zone.today.to_s @available_start_dates = @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) || {} # If no report name is provided, redirect to a default report. # Prefer the historical default (second report) when present, but fall back # to the first report so a single configured report still renders the # dashboard controls and chart area. default_report = @reports[1] || @reports[0] if @reports.is_a?(Array) default_name = default_report&.fetch('reportName', nil).presence if @raw_name.blank? && default_name.present? query_params = { start_date: @start_date, end_date: @end_date, name: default_name, smooth: params[:smooth], sql_only: params[:sql_only], format: params[:format] } query_params[:fake] = params[:fake] if params[:fake].present? query_params[:type] = params[:type] if params[:type].present? redirect_to dashboard_index_path(query_params) and return end 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:, smooth: params[:smooth], sql_only: params[:sql_only], format: params[:format] } # Test only query_params[:fake] = params[:fake] if params[:fake].present? query_params[:type] = params[:type] if params[:type].present? redirect_to dashboard_index_path(query_params) and return end params.permit! end |
#reports ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'app/controllers/kanaui/dashboard_controller.rb', line 74 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 respond_to do |fmt| fmt.csv do filename = params[:name] if params[:start_date].present? filename += "_#{params[:start_date]}" filename += "-#{params[:end_date]}" if params[:end_date].present? end filename += '.csv' send_data(raw_reports, filename:) end fmt.all { render json: reports } end end |