Class: CandyChartsController

Inherits:
ApplicationController
  • Object
show all
Defined in:
app/controllers/candy_charts_controller.rb

Overview

************************************************************************************* TOCOMMENT *************************************************************************************

Instance Method Summary collapse

Instance Method Details

#authenticateObject



42
43
44
45
46
# File 'app/controllers/candy_charts_controller.rb', line 42

def authenticate
  auth = ChartCandy::Authentication.new(request.url, params)

  @granted = (auth.valid_token? and not auth.expired?)
end

#render_xls(builder) ⇒ Object



35
36
37
38
39
40
# File 'app/controllers/candy_charts_controller.rb', line 35

def render_xls(builder)
  spreadsheet = StringIO.new
  builder.to_xls.write spreadsheet

  send_data spreadsheet.string, filename: builder.filename, type:  "application/vnd.ms-excel"
end

#set_default_toObject



48
49
50
51
52
53
54
55
56
57
58
59
# File 'app/controllers/candy_charts_controller.rb', line 48

def set_default_to
  if params[:nature] == 'line'
    params[:to] = case params[:step]
      when 'day' then (Time.now.utc - 1.day).end_of_day.iso8601
      when 'week' then (Time.now.utc - 1.week).end_of_week.iso8601
      when 'month' then (Time.now.utc - 1.month).end_of_month.iso8601
      else Time.now.utc.iso8601
    end
  else
    params[:to] = Time.now.utc.iso8601
  end
end

#showObject



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

def show
  if @granted
    set_default_to if params[:from] and not params[:to]

    name = (params[:id].gsub('-', '_').camelize + 'Chart')

    begin
      chart = name.constantize.new(params)
    rescue
      raise "Chart Candy: You must defined #{name}"
    end

    builder = "ChartCandy::Builder::#{params[:nature].camelize}".constantize.new(params[:id], params)

    chart.build builder

    respond_to do |format|
      format.json { render json: builder.to_json }
      format.xls { render_xls builder }
    end
  else
    respond_to do |format|
      format.json { render json: { 'state' => 'access_refused' } }
      format.xls { render text: 'access_refused' }
    end
  end
end