class Reconn::Visualizer

Public Class Methods

make_bar_chart(title, data, additional_line_value = nil) click to toggle source
# File lib/reconn/visualizer.rb, line 20
def self.make_bar_chart(title, data, additional_line_value = nil)
  chart = Gruff::Bar.new
  chart.minimum_value = 0
  chart.maximum_value = data.first[:value]
  chart.additional_line_values = [additional_line_value] unless additional_line_value.nil?
  chart.title = title.to_s
  data.each do |item|
    chart.data(item[:label], item[:value])
  end

  chart.to_blob
end
make_dependency_diagram(classes) click to toggle source
# File lib/reconn/visualizer.rb, line 33
def self.make_dependency_diagram(classes)
  diagram = GraphViz.new(:G, :type => :digraph)
  nodes = classes.map { |c| diagram.add_nodes(c.name) }
  external_nodes = classes.map {|c| c.external_deps}.inject(:+).uniq.map {|n| diagram.add_nodes(n)}
  classes.each do |klass|
    classes.each do |other_klass|
      if !klass.dependencies.index {|d| d == other_klass.name }.nil? || klass.dependencies.find_all {|d| other_klass.name =~ /^.*{0,}::#{d}$/}.size == 1
        node, other_node = [klass, other_klass].map {|k| nodes.find {|n| n[:label].to_s.gsub('"', '') == k.name}}
        diagram.add_edges(node, other_node)
      end
    end
    external_nodes.each {|n| n.set {|_n| _n.color = "blue"}}
    external_nodes.each do |ext_node|
      if klass.external_deps.include?(ext_node[:label].to_s.gsub('"', ''))
        node = nodes.find {|n| n[:label].to_s.gsub('"', '') == klass.name}
        diagram.add_edges(node, ext_node)
      end
    end
  end
  diagram.output(:png => String)
end
make_pie_chart(title, data, items_number) click to toggle source
# File lib/reconn/visualizer.rb, line 6
def self.make_pie_chart(title, data, items_number)
  chart = Gruff::Pie.new
  chart.title = title.to_s
  data = Array.new(data)
  data.first(items_number).each do |item|
    chart.data(item[:label], item[:value])
    data.delete(item)
  end

  chart.data("other", data.map {|itm| itm[:value]}.inject(:+))

  chart.to_blob
end