class SocialStream::D3::Force
Public Class Methods
new(ties, view)
click to toggle source
# File lib/social_stream/d3.rb, line 6 def initialize(ties, view) @view = view @force = ties.inject({ :nodes => [], :links => [] }) { |result, t| add_node(result[:nodes], t.sender) add_node(result[:nodes], t.receiver) add_link(result[:links], t, result[:nodes]) result } end
Public Instance Methods
to_json()
click to toggle source
# File lib/social_stream/d3.rb, line 20 def to_json @force.to_json end
Private Instance Methods
add_link(links, tie, nodes)
click to toggle source
# File lib/social_stream/d3.rb, line 40 def add_link(links, tie, nodes) links << { :source => nodes_actor_index(nodes, tie.sender), :target => nodes_actor_index(nodes, tie.receiver), :value => 1 } end
add_node(nodes, actor)
click to toggle source
# File lib/social_stream/d3.rb, line 34 def add_node(nodes, actor) return if nodes_actor_index(nodes, actor) nodes << node(actor) end
node(actor)
click to toggle source
# File lib/social_stream/d3.rb, line 26 def node(actor) { :name => actor.name, :logo => @view.image_path(actor.logo.url(:representation)), :group => SocialStream.subjects.index(actor.subject_type.underscore.to_sym) + 1 } end
nodes_actor_index(nodes, actor)
click to toggle source
# File lib/social_stream/d3.rb, line 48 def nodes_actor_index(nodes, actor) nodes.index(nodes.find{ |n| n[:name] == actor.name }) end