Open_flash_chart Lazy Rails Plugin es Sinatra compatible
July 21st, 2008
En la Pizzaconf Uruguay, presentaron Sinatra y lo encontré ideal para armar una aplicación de ejemplo para Open Flash Chart Lazy. Ya lo puse en marcha y estoy trabajando en armar los tutoriales para el plugin. Pueden ver algo acá (no esta listo, falta bastante)
Sample App Open Flash Chart Lazy
Sources de la sample app en Sinatra
Saluti
P
Open_flash_chart Lazy Rails Plugin updated
July 13th, 2008
Tuve que incluír un gráfico de barras, asi que ahora está incluído, también revisé la doc (primitiva) y faltaba especificar la ruta dentro de un hash.
Algunas mejoras:
- Corrección de la documentación (actualizado en el anuncio original).
- Bar chart fue incorporado.
- Atributos generales del gráfico pueden ser especificados ahora.
Próximos pasos:
- Más ejemplos
- Más de un gráfico inline (en lo posible sin tocar open_flash_chart_2)
Seguiremos mejorándolo.
Si alguien lo usó y tiene alguna idea o sugerencia, bienvenido!
P
Open_flash_chart Lazy Rails Plugin
July 11th, 2008
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
FixtureReplacement, la revancha!
January 6th, 2008
Hace tiempo hablamos de FixtureReplacement . En ese entonces tuve toda la intensión de utilizarlo, pero me encontré con un dilema. No soportaba namespaces. Le escribí el flaco que lo desarrlló, intercambiamos algunas líneas, y al mes me comentó la novedad: Finalmente soporta namespaces.
O sea que si ahora tenemos un modelo Admin::Rol, podemos especificar la factory de la siguiente manera:
module FixtureReplacement
attributes_for :admin_rol, :class => Admin::Rol do |rol|
rol.nombre = "Guarda"
rol.permisos << create_admin_permiso
rol.permisos << create_admin_permiso(:nombre => "Sonar Silbato")
end
attributes_for :admin_permiso, :class => Admin::Permiso do |p|
p.nombre = "Cortar Boletos"
end
end
Esto hace la práctica de BDD y TDD mucho más amena.
Más información aquí
User Registration Plugin para mephisto
November 21st, 2007
Para la PizzaConf armamos este plugin para registración de usuarios.
svn://svn.virtualizar.com.ar/projects/plugins/mephisto_reg/
Esta basado en el de feedback, corre en Mephisto Trunk y Rails Edge.
Es un buen startup para armar plugin de mephisto con la nueva arquitectura de plugins.
Temas a tener en cuenta:
Agregar a config/initalizers/custom.rb ActionController::Routing::Routes.reload! al final
Que estas haciendo con RoR?
October 2nd, 2007
En mi caso estoy en una empresa armando un plugin de Autorización basado en plugin de ModelSecurity con algunos cambios que necesito, como que se declaren los permisos en ActiveRecord y no en el código, que tenga auditoría y permita tambien aplicar permisos sobre ActionController. Lo enganche con acts_as_paranoid.
Un requerimiento importante es que solo sea autorización y no autenticación, montandose sobre un sistema de autenticación existente de forma transparente, solamente indicando el objeto que tiene el usario y el metodo para obtenerlo.
Tambien algunas modificaciones a in_place_controls para integrar el autorizador.
Antes de fin de año lo hare público.
Ustedes en que andan?
Acts_as_trackable Plugin
June 3rd, 2007
Este plugin fue escrito con la intención de llevar un tracking de cambio de estados en modelos.
El codigo esta escrito en ingles pero los comentarios y los specs son bilingües ingles/español Es compatible con acts_as_state_machine
Si tienes un modelo que va cambiando de estado a través del tiempo y quieres rastrear esos cambios, este plugin te lo facilita.
El uso es simple:
class Orden < ActiveRecord::Base
acts_as_trackable, :track_method => :estado
end
Indicando :track_method le estaremos diciendo que metodo nos devolvera el estado de la instancia de nuestro modelo y en el before_save si es distinto del anterior se creara un nuevo track.
Fue desarrollado utilizando rspec aqui van los specs:
describe "Cuando genero una order. When an order is created" do
before(:each) do
@order = Order.new(:customer=>"Capitan Piluso",:state=>"created")
end
it "Deberia tener un track asociado cuando se graba. Should have a new track associated" do
@order.should have(0).tracks
@order.save
@order.should have(1).tracks
@order.tracks[0].should be_an_instance_of(Track)
end
it "Deberia guardar la instancia serializada en track. Should save the instance serialized" do
@order.save
@order.tracks.last.retrieve_old_instance.should be_an_instance_of(Order)
end
end
describe "Cuando cambia el estado de una order existente. When an order state is changed" do
before(:each) do
@order = Order.create(:customer=>"El Manosanta",:state=>"created")
@order.state = "shipped"
@order.save
end
it "Deberia crear otro track. Should create another track" do
@order.should have(2).tracks
@order.current_track.state.should == "shipped"
@order.tracks.first.state.should == "created"
end
end
describe "Con varios tracks. With several tracks" do
fixtures :orders
it "deberia poder recuperar la instancia de order en otro momento, should retrieve an old instance of order" do
@order = orders(:created_1)
@old_order = orders(:created_1)
@order.customer = "Dentaduras Sonria Ya"
@order.state = "shipped"
@order.save
@order.state = "returned"
@order.save
@order.tracks[0].retrieve_old_instance.should eql(@old_order)
@order.tracks[1].retrieve_old_instance.should !eql(@old_order)
@order.tracks[1].retrieve_old_instance.should eql(@order)
end
end
Lo pueden encontrar en
svn://svn.virtualizar.com.ar/projects/plugins/acts_as_trackable/
Aqui escribi un artículo sobre BDD y rspec, el código esta outdated, pero el concepto esta bien. BDD – La evolucion natural del TDD
Esperamos les sea de utilidad
El plugin más chico?
May 15th, 2007
Muchas veces nos sirve saber cual es la versión o release que tenemos en producción y no queremos hacer un svn info, asi también nos puede pasar que cuando algo no anda bien queremos estar seguros de que estamos corriendo el ambiente esperado.
Este plugin, mal nombrado “acts_as_releaseable” nos agrega en nuestro html un comentario con la revisión de svn que esta corriendo y el environment sin tener que hacer un ssh.
Si no usan subversion o capistrano para subir los releases de su aplicación, no tiene ningún sentido ;-)
svn://svn.virtualizar.com.ar/projects/plugins/acts_as_releaseable
La utilización es simple, en nuestro/s layout donde más nos guste, ponemos <%= release %>
Le agregarían algo mas, como lo mejorarían?
Espero les sea de utilidad.


