summaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/repositories_controller.rb19
1 files changed, 10 insertions, 9 deletions
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index bdd56f0aa..59afc5529 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -397,16 +397,16 @@ class RepositoriesController < ApplicationController
end
def graph_commits_per_author(repository)
- commits_by_author = Changeset.where("repository_id = ?", repository.id).group(:committer).count
- commits_by_author.to_a.sort! {|x, y| x.last <=> y.last}
-
- changes_by_author = Change.joins(:changeset).where("#{Changeset.table_name}.repository_id = ?", repository.id).group(:committer).count
- h = changes_by_author.inject({}) {|o, i| o[i.first] = i.last; o}
-
- fields = commits_by_author.collect {|r| r.first}
- commits_data = commits_by_author.collect {|r| r.last}
- changes_data = commits_by_author.collect {|r| h[r.first] || 0}
+ #data
+ stats = repository.stats_by_author
+ fields, commits_data, changes_data = [], [], []
+ stats.each do |name, hsh|
+ fields << name
+ commits_data << hsh[:commits_count]
+ changes_data << hsh[:changes_count]
+ end
+ #expand to 10 values if needed
fields = fields + [""]*(10 - fields.length) if fields.length<10
commits_data = commits_data + [0]*(10 - commits_data.length) if commits_data.length<10
changes_data = changes_data + [0]*(10 - changes_data.length) if changes_data.length<10
@@ -414,6 +414,7 @@ class RepositoriesController < ApplicationController
# Remove email address in usernames
fields = fields.collect {|c| c.gsub(%r{<.+@.+>}, '') }
+ #prepare graph
graph = SVG::Graph::BarHorizontal.new(
:height => 30 * commits_data.length,
:width => 800,