From 2f7f46b25655aa6f2c2a7756663c97ddb4491100 Mon Sep 17 00:00:00 2001 From: Sato Hiroyuki Date: Wed, 6 Mar 2013 20:31:28 +0900 Subject: [PATCH] Refactor: replace "render :json = graph.to_json" to view template(show.json.erb). Because model shouldn't know about view logic. --- app/controllers/graph_controller.rb | 17 +++++++---------- app/helpers/graph_helper.rb | 5 +++++ app/models/graph/commit.rb | 22 +--------------------- app/models/graph/json_builder.rb | 7 ------- app/views/graph/show.json.erb | 26 ++++++++++++++++++++++++++ 5 files changed, 39 insertions(+), 38 deletions(-) create mode 100644 app/helpers/graph_helper.rb create mode 100644 app/views/graph/show.json.erb diff --git a/app/controllers/graph_controller.rb b/app/controllers/graph_controller.rb index 33cb2d2dcb9..d27fd039478 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 00000000000..ba8c68a1ce0 --- /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 8ed61f4b5af..e47a543daa9 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 013d15fb754..2e0edb8a9ca 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 00000000000..0531bc3c920 --- /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 +) %>