Rails Summit Latin America

Hace tiempo que no hacía un plugin. Surgió la necesidad de hacer un dashboard con gráficos de usuarios, suscripciones, participación etc. Estuvimos analizando varias opciones y quedó OpenFlashChart les recomiendo miren los samples, no estan nada mal.

El foco fue puesto en escribir poco código y hacerlo flexible a posibles cambios en open_flash_chart que esta en beta.

Inicialmente solo soporta gráficos de líneas, pero debería ser fácil agregar soporte para otros gráficos. Fué pensado para resolver un problema, no para resolverlos todos ;-)

Todo

  • More doc
  • Support for other graphs
  • Label annotation for pies
  • May be more specs? mmm
  • Add series matcher block to allow any kind of matcher for series
  • Avoid to specify the start_date for time series for each serie
  • Add periodically_call_remote_graph (rodrigo orrego chileonrails)

Known issues

  • No soporta dos gráficos inline por vez.
  • Los gráficos Inline no son compatibles con prototype.js

Instalación

cd vendor/plugins
git clone git://github.com/peterpunk/open_flash_chart_lazy.git
cd ..
cd ..
rake open_flash_chart_lazy:install

Desinstalación

rake open_flash_chart_lazy:remove

Ejemplos

Accediendo a datos remotos

En el controller …
def progress
  bar_graph = OpenFlashChartLazy::Line.new("The title of the graph")
  first_serie = OpenFlashChartLazy::Serie.new(
  [["2008-1",100],["2008-2",120],["2008-3",130]],
  {:title=>"Argentina",:start_date=>Time.mktime(2008,1,1),:items=>8})

  second_serie = OpenFlashChartLazy::Serie.new(
  [["2008-1",50],["2008-2",40],["2008-3",90]],
  {:title=>"Tupungato",:start_date=>Time.mktime(2008,1,1),:items=>8})

  bar_graph.add_serie(first_serie)
  bar_graph.add_serie(second_serie)

  render :text=>bar_graph.to_graph_json
end
En la vista …
<%= remote_graph("my_chart",{:route=>"/admin/dashboard/progress"}) %>

Con datos en la página

En el controller …
def show
  @pie_chart = OpenFlashChartLazy::Pie.new("Channels")
  channels=OpenFlashChartLazy::Serie.new([["Wealth",34],["Financial",45]])
  @pie_chart.add_serie(channels)
end
En la vista …
<%= inline_graph(@pie_chart) %>

Personalizando el gráfico

Todos los atributos son asignados a un hash en general, podes agregar los que sean necesarios para que tu gráfico sea lo que necesitas.


bar_graph.x_axis[:labels][:rotate]="vertical" 
bar_graph.x_axis[:labels][:rotate]="vertical" 
bar_graph.x_axis[:colour]="#808080" 
bar_graph.x_axis["grid-colour"]="#A0A0A0" 
bar_graph.x_axis[:stroke]=0.5

bar_graph.y_axis[:colour]="#808080" 
bar_graph.y_axis[:stroke]=0.5
bar_graph.y_axis["grid-colour"]="#A0A0A0" 

Personalizando el Background

Se puede tambien agregar cualquier atributo al gráfico ya que esto es manejado por method missing.


bar_graph.bg_colour="#FFFFFF" 

Otras implementaciones para la versión 2

http://github.com/korin/open_flash_chart_2/tree/master may be not working yet

Otras implementaciones para la versión 1

PullMonkey http://github.com/markcatley/open_flash_chart/tree/master

P

4 Responses to “Open_flash_chart Lazy Rails Plugin”

  1. Juan Pablo Says:

    Hola, queria comentarte que hay un plugin que utiliza esas mismas graficas y esta bastante avanzado.

    http://www.pullmonkey.com/projects/open_flash_chart/

    sludos

  2. Peterpunk Says:

    Según el research que hice antes de comenzar, el plugin que mencionas trabaja con la versión 1 de open_flash_chart, o sea, que no soporta Json ni inline data que es la que más me interesaba. El approach es diferente, yo necesitaba resolver un problema y hacerlo de cero con la nueva versión de open_flash_chart me pareció la mejor opción.

    Saludos

    P

  3. Jose Boza Says:

    Excelente Pedro, yo estuve buscando un plugin asi tampoco encontre lo que necesitaba, hasta hoy. Pura Vida!

  4. Peterpunk Says:

    Gracias Jose!

    Estamos trabajando con monk.e.boy para soportar muchos gráficos inline en la misma página.

    Abrazo

    P

Sorry, comments are closed for this article.