Class: Chuggle::ScatterPlotGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/chuggle/scatter_plot_generator.rb

Class Method Summary collapse

Class Method Details

.from(metrics_hash) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/chuggle/scatter_plot_generator.rb', line 4

def self.from(metrics_hash)

  data_in_json_format = metrics_hash.map do |filename, metrics|
    {:filename => filename, :x => metrics[:churn], :y => metrics[:complexity]}
  end.reject do |metrics|
      metrics[:x].nil? || metrics[:y].nil?
  end.to_json
  series = ["var chuggleGraphData = #{data_in_json_format};"]

  grouped_by_directory = metrics_hash.group_by do |filename, _|
    directories = File.dirname(filename).split("/")
    directories[0..1].join("/")
  end

  directory_series = {}
  grouped_by_directory.each_pair do |directory, metrics_hash|
    data_in_json_format = metrics_hash.map do |filename, metrics|
      {:filename => filename, :x => metrics[:churn], :y => metrics[:complexity]}
    end.reject do |metrics|
        metrics[:x].nil? || metrics[:y].nil?
    end
    directory_series[directory] = data_in_json_format
  end

  series << "var directorySeries = #{directory_series.to_json};"

  series.join("\n")
end