Refactor: replace "render :json = graph.to_json" to view template(show.json.erb).

Because model shouldn't know about view logic.
This commit is contained in:
Sato Hiroyuki 2013-03-06 20:31:28 +09:00
parent 9dc46eee8e
commit 2f7f46b256
5 changed files with 39 additions and 38 deletions

View File

@ -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

View File

@ -0,0 +1,5 @@
module GraphHelper
def join_with_space(ary)
ary.collect{|r|r.name}.join(" ") unless ary.nil?
end
end

View File

@ -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|

View File

@ -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

View File

@ -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
) %>