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_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