Class: Reconn::Visualizer
- Inherits:
-
Object
- Object
- Reconn::Visualizer
- Defined in:
- lib/reconn/visualizer.rb
Class Method Summary collapse
- .make_bar_chart(title, data, additional_line_value = nil) ⇒ Object
- .make_dependency_diagram(classes) ⇒ Object
- .make_pie_chart(title, data, items_number) ⇒ Object
Class Method Details
.make_bar_chart(title, data, additional_line_value = nil) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/reconn/visualizer.rb', line 20 def self.(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) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# 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) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# 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 |