Because model shouldn't know about view logic.
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
--- /dev/null
+module GraphHelper
+ def join_with_space(ary)
+ ary.collect{|r|r.name}.join(" ") unless ary.nil?
+ end
+end
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
@_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|
@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
--- /dev/null
+<% 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
+) %>