jueves, 26 de marzo de 2009

Graficos estadisticos con flash en Rails


Bueno, estuve buscando diferentes alternativas para agregar graficos chart a una aplicacion que estoy desarrollando con el framework Ruby on Rails y en primera instancia utilize la api de google chart para agregar algunos graficos, pero me parecieron bastante estaticos a la vista por lo que queria buscar otras bibliotecas o plugins. Entonces, luego decidi buscar algo un poco mas llamativo o lindo a la vista y encontre el plugin open flash chart que lo instale desde github.com.

Bueno, los pasos que di en la instalacion fueron los siguientes.

Desde el directorio raiz se instala el plugin



script/plugin install git://github.com/pullmonkey/open_flash_chart.git
y copio dos archivos desde la instalacion del plugin al directorio public de la aplicacion

cp vendor/plugins/open_flash_chart/assets/open-flash-chart.swf   public/open-flash-chart.swf

cp vendor/plugins/open_flash_chart/assets/javascripts/swfobject.js public/javascripts/swfobject.js

Luego en el controlador del modulo donde quiero mostrar el grafico cree los siguientes metodos



def stats
@graph = open_flash_chart_object(600,300,"/my_controller/graph_statistics/")
end

def graph_statistics
pie_values
title = Title.new('Title of the graph')

pie = Pie.new
pie.start_angle = 35
pie.animate = true
pie.tooltip = '#val# de #total# #percent# del 100%'
pie.colours = ["#5858FA", "#FF0080"]
pie.values = @pie_values

chart = OpenFlashChart.new
chart.title = title
chart.add_element(pie)

chart.x_axis = nil

render :text => chart.to_s
end

private

def pie_values
@pie_values = []
if not Controller.some_values.empty?
Controller.some_values unless @pie_values << Controller.some_values
end

if not Controller.other_values.empty?
Controller.other_values unless @pie_values << Controller.other_values
end
end


y en la vista stats.html.erb agregue lo siguiente


<%= javascript_include_tag('swfobject') %>
<%= @graph %>


lo que al arrancar la aplicacion y llamar en mi vista de estadísticas para el modulo que implemente el chart me muestra un interesante gráfico un poco mas lindo que lo que se obtiene con los graficos chart de la api de google


Esta bueno el plugin este, si no los utilizaron recomiendo que lo prueben, queda bastante bien y tiene graficos para todos los gustos. Ademas por lo que vi en la pagina oficial de esta libreria teethgrinder.co.uk esta misma se puede utilizar en varios lenguajes de programacion como Java, Perl, Python, Php o .NET ademas del framework Ruby on Rails

2 comentarios:

Anónimo dijo...

Hola!, esta super el plugin, estoy trabajando con redmine y ruby on rails, pero intente instalarlo siguiendo tus pasos y no hace nada,q puede ser?.
Cualquier ayuda es Bienvenida.
Gracias

Cesar Díaz dijo...

Lograste instalarlo?
Si lo instalaste te fijaste en logs?

Lee un poco el README que tiene este plugin en 'vendor/plugins/open_flash_chart/README, ahí tiene un ejemplo un poco distinto a lo que yo hice funcionar para mi aplicación.

También tendrías que ver si el archivo para graficar en 'public/open-flash-chart.swf' tiene permisos adecuados.

Suerte