Class: DashCreator::ChartController

Inherits:
ApplicationController show all
Defined in:
app/controllers/dash_creator/chart_controller.rb

Instance Method Summary collapse

Instance Method Details

#create_chartObject



7
8
9
10
11
12
13
14
15
16
17
# File 'app/controllers/dash_creator/chart_controller.rb', line 7

def create_chart
  return render json: {models: nil} if params[:filters].nil?

  # Remove useless filters from data
  chart_data = params
  chart_data[:filters] = chart_data[:filters]
                             .to_unsafe_h
                             .select { |key, value| chart_data[:y_data].include?(key.to_s) || (key.to_s == chart_data[:x_data][:attribute].classify && chart_data[:x_data][:from_filter] == 'true' ) }

  render 'dash_creator/chart/create_chart', locals: {chart_data: chart_data, filters_data: nil, id: 0}
end

#delete_chartsObject



68
69
70
71
# File 'app/controllers/dash_creator/chart_controller.rb', line 68

def delete_charts
  user = user_for_dash_creator
  DashCreator::Chart.all.where(user_id: user.id, id: params[:charts_ids]).destroy_all
end

#edit_chartObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/controllers/dash_creator/chart_controller.rb', line 35

def edit_chart
  return render json: {models: nil} if params[:filters].nil?

  # Remove useless filters from data
  chart_data = params
  chart_data[:filters] = chart_data[:filters]
                             .to_unsafe_h
                             .select { |key, value| chart_data[:y_data].include?(key.to_s) || (key.to_s == chart_data[:x_data][:attribute].classify && chart_data[:x_data][:from_filter] == 'true' ) }

  # Edit chart from data
  user = user_for_dash_creator
  chart = DashCreator::Chart.all.where(user_id: user.id).find(params[:chart_id])
  chart.update_attribute(:data, chart_data)

  render json: {chart_id: chart.id}
end

#get_chartObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/controllers/dash_creator/chart_controller.rb', line 52

def get_chart
  user = user_for_dash_creator
  id = params[:chart_id]
  chart = DashCreator::Chart.all.where(user_id: user.id).find(id)
  refresh = params.key?('refresh') ? params['refresh'] : 'false'

  filters_data = chart.data['filters']

  chart_data = chart.data
  chart_data['refresh'] = refresh
  chart_data.delete('chart_id')
  chart_data.delete('chart_name')

  render 'dash_creator/chart/create_chart', locals: {chart_data: chart.data, filters_data: filters_data, id: id}
end

#pluck_labelsObject



73
74
75
76
77
78
79
# File 'app/controllers/dash_creator/chart_controller.rb', line 73

def pluck_labels
  model = params[:model].safe_constantize
  attribute = params[:attribute]
  limit = params[:limit].empty? ? 30 : params[:limit].to_i

  render json: {labels: model.pluck(:"#{attribute}").uniq.take(limit)}
end

#save_chartObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/controllers/dash_creator/chart_controller.rb', line 19

def save_chart
  return render json: {models: nil} if params[:filters].nil?

  # Remove useless filters from data
  chart_data = params
  chart_data[:filters] = chart_data[:filters]
                             .to_unsafe_h
                             .select { |key, value| chart_data[:y_data].include?(key.to_s) || (key.to_s == chart_data[:x_data][:attribute].classify && chart_data[:x_data][:from_filter] == 'true' ) }

  # Create chart from data
  user = user_for_dash_creator
  chart = DashCreator::Chart.all.where(user_id: user.id).create(name: params[:chart_name], data: chart_data)

  render json: {chart_id: chart.id}
end