d08bbc569fda37058dd37cf748484fa50f06854d
[selectricity-live] / app / controllers / sparklines_controller.rb
1 # Selectricity: Voting Machinery for the Masses
2 # Copyright (C) 2007, 2008 Benjamin Mako Hill <mako@atdot.cc>
3 # Copyright (C) 2007 Massachusetts Institute of Technology
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as
7 # published by the Free Software Foundation, either version 3 of the
8 # License, or (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 # Affero General Public License for more details.
14 #
15 # You should have received a copy of the GNU Affero General Public
16 # License along with this program.  If not, see
17 # <http://www.gnu.org/licenses/>.
18
19 class SparklinesController < ApplicationController
20     # Handles requests for sparkline graphs from views.
21     #
22     # Params are generated by the sparkline_tag helper method.
23     #
24         def index
25                 # Make array from comma-delimited list of data values
26                 ary = []
27                 if params.has_key?('results') && !params['results'].nil?
28                   params['results'].split(',').each do |s|
29                           ary << s.to_i
30                   end
31                 end
32
33                 send_data( Sparklines.plot( ary, params ), 
34                                         :disposition => 'inline',
35                                         :type => 'image/png',
36                                         :filename => "spark_#{params[:type]}.png" )
37         end
38     
39     def spark_pie
40       send_data(Sparklines.plot( ))
41     end
42     # Use this type of method for sparklines that can be cached. (Doesn't work with the helper.)
43     #
44     # To make caching easier, add a line like this to config/routes.rb:
45     # map.sparklines "sparklines/:action/:id/image.png", :controller => "sparklines"
46     #
47     # Then reference it with the named route:
48     #   image_tag sparklines_url(:action => 'show', :id => 42)
49     def show
50       send_data(Sparklines.plot(
51                   [42, 37, 89, 74, 70, 50, 40, 30, 40, 50],
52                   :type => 'bar', :above_color => 'orange'
53                 ), 
54                 :disposition => 'inline', 
55                 :type => 'image/png', 
56                 :filename => "sparkline.png")
57     end
58   
59   
60   
61 end

Benjamin Mako Hill || Want to submit a patch?