Merge pull request #2855 from hiroponz/fix-bug-of-network-graph

Fix bug of network graph(#2847) and trivial code clean up.
This commit is contained in:
Dmitriy Zaporozhets 2013-01-31 02:33:59 -08:00
commit 56000aea22
2 changed files with 16 additions and 9 deletions

View file

@ -109,9 +109,9 @@ module Gitlab
end end
space = if commit.space >= parent.space then space = if commit.space >= parent.space then
find_free_parent_space(range, map, parent.space, 1, commit.space, times) find_free_parent_space(range, parent.space, 1, commit.space, times)
else else
find_free_parent_space(range, map, parent.space, -1, parent.space, times) find_free_parent_space(range, parent.space, -1, parent.space, times)
end end
mark_reserved(range, space) mark_reserved(range, space)
@ -122,9 +122,9 @@ module Gitlab
spaces spaces
end end
def find_free_parent_space(range, map, space_base, space_step, space_default, times) def find_free_parent_space(range, space_base, space_step, space_default, times)
if is_overlap?(range, times, space_default) then if is_overlap?(range, times, space_default) then
find_free_space(range, map, space_base, space_step) find_free_space(range, space_base, space_step)
else else
space_default space_default
end end
@ -152,11 +152,9 @@ module Gitlab
if leaves.empty? if leaves.empty?
return return
end end
time_range = leaves.last.time..leaves.first.time
space = find_free_space(time_range, map, 1, 2)
leaves.each{|l| l.space = space}
# and mark it as reserved # and mark it as reserved
min_time = leaves.last.time min_time = leaves.last.time
max_space = 1
parents = leaves.last.parents.collect parents = leaves.last.parents.collect
parents.each do |p| parents.each do |p|
if map.include? p.id if map.include? p.id
@ -164,6 +162,9 @@ module Gitlab
if parent.time < min_time if parent.time < min_time
min_time = parent.time min_time = parent.time
end end
if max_space < parent.space then
max_space = parent.space
end
end end
end end
if parent_time.nil? if parent_time.nil?
@ -171,6 +172,11 @@ module Gitlab
else else
max_time = parent_time - 1 max_time = parent_time - 1
end end
time_range = leaves.last.time..leaves.first.time
space = find_free_space(time_range, max_space, 2)
leaves.each{|l| l.space = space}
mark_reserved(min_time..max_time, space) mark_reserved(min_time..max_time, space)
# Visit branching chains # Visit branching chains
@ -188,11 +194,12 @@ module Gitlab
end end
end end
def find_free_space(time_range, map, space_base, space_step) def find_free_space(time_range, space_base, space_step)
reserved = [] reserved = []
for day in time_range for day in time_range
reserved += @_reserved[day] reserved += @_reserved[day]
end end
reserved.uniq!
space = space_base space = space_base
while reserved.include?(space) do while reserved.include?(space) do

View file

@ -122,7 +122,7 @@
var cx = offsetX + 20 * c.time var cx = offsetX + 20 * c.time
, cy = offsetY + 10 * c.space , cy = offsetY + 10 * c.space
, psy = offsetY + 10 * ps; , psy = offsetY + 10 * ps;
if (c.space == this.commits[i].space) { if (c.space == this.commits[i].space && c.space == ps) {
r.path([ r.path([
"M", x, y, "M", x, y,
"L", cx, cy "L", cx, cy