diff --git a/app/controllers/graph_controller.rb b/app/controllers/graph_controller.rb index 33cb2d2d..d27fd039 100644 --- a/app/controllers/graph_controller.rb +++ b/app/controllers/graph_controller.rb @@ -8,24 +8,21 @@ class GraphController < ProjectResourceController before_filter :require_non_empty_project def show - if params.has_key?(:q) && params[:q].blank? - redirect_to project_graph_path(@project, params[:id]) - return - end - if params.has_key?(:q) + if params[:q].blank? + redirect_to project_graph_path(@project, params[:id]) + return + end + @q = params[:q] @commit = @project.repository.commit(@q) || @commit end respond_to do |format| format.html + format.json do - graph = Graph::JsonBuilder.new(project, @ref, @commit) - graph.commits.each do |c| - c.icon = gravatar_icon(c.author.email) - end - render :json => graph.to_json + @graph = Graph::JsonBuilder.new(project, @ref, @commit) end end end diff --git a/app/helpers/graph_helper.rb b/app/helpers/graph_helper.rb new file mode 100644 index 00000000..ba8c68a1 --- /dev/null +++ b/app/helpers/graph_helper.rb @@ -0,0 +1,5 @@ +module GraphHelper + def join_with_space(ary) + ary.collect{|r|r.name}.join(" ") unless ary.nil? + end +end diff --git a/app/models/graph/commit.rb b/app/models/graph/commit.rb index 8ed61f4b..e47a543d 100644 --- a/app/models/graph/commit.rb +++ b/app/models/graph/commit.rb @@ -4,7 +4,7 @@ module Graph class Commit include ActionView::Helpers::TagHelper - attr_accessor :time, :spaces, :refs, :parent_spaces, :icon + attr_accessor :time, :spaces, :refs, :parent_spaces def initialize(commit) @_commit = commit @@ -17,26 +17,6 @@ module Graph @_commit.send(m, *args, &block) end - def to_graph_hash - h = {} - h[:parents] = self.parents.collect do |p| - [p.id,0,0] - end - h[:author] = { - name: author.name, - email: author.email, - icon: icon - } - h[:time] = time - h[:space] = spaces.first - h[:parent_spaces] = parent_spaces - h[:refs] = refs.collect{|r|r.name}.join(" ") unless refs.nil? - h[:id] = sha - h[:date] = date - h[:message] = message - h - end - def add_refs(ref_cache, repo) if ref_cache.empty? repo.refs.each do |ref| diff --git a/app/models/graph/json_builder.rb b/app/models/graph/json_builder.rb index 013d15fb..2e0edb8a 100644 --- a/app/models/graph/json_builder.rb +++ b/app/models/graph/json_builder.rb @@ -19,13 +19,6 @@ module Graph @days = index_commits end - def to_json(*args) - { - days: @days.compact.map { |d| [d.day, d.strftime("%b")] }, - commits: @commits.map(&:to_graph_hash) - }.to_json(*args) - end - protected # Get commits from repository diff --git a/app/views/graph/show.json.erb b/app/views/graph/show.json.erb new file mode 100644 index 00000000..0531bc3c --- /dev/null +++ b/app/views/graph/show.json.erb @@ -0,0 +1,26 @@ +<% self.formats = ["html"] %> + +<%= raw( + { + days: @graph.days.compact.map { |d| [d.day, d.strftime("%b")] }, + commits: @graph.commits.map do |c| + { + parents: c.parents.collect do |p| + [p.id,0,0] + end, + author: { + name: c.author.name, + email: c.author.email, + icon: gravatar_icon(c.author.email, 20) + }, + time: c.time, + space: c.spaces.first, + parent_spaces: c.parent_spaces, + refs: join_with_space(c.refs), + id: c.sha, + date: c.date, + message: c.message, + } + end + }.to_json +) %>