Refactor: extract method.

master
Sato Hiroyuki 2013-03-19 18:42:46 +09:00
parent 96a584211b
commit 351c952192
1 changed files with 63 additions and 53 deletions

View File

@ -53,10 +53,10 @@ class BranchGraph
top = r.set()
cuday = 0
cumonth = ""
offsetX = 20
offsetY = 60
@offsetX = 20
@offsetY = 60
barWidth = Math.max(graphWidth, @days.length * 20 + 320)
scrollLeft = cw
@scrollLeft = cw
@raphael = r
r.rect(0, 0, barWidth, 20).attr fill: "#222"
r.rect(0, 20, barWidth, 20).attr fill: "#444"
@ -64,7 +64,7 @@ class BranchGraph
for day, mm in @days
if cuday isnt day[0]
# Dates
r.text(offsetX + mm * 20, 31, day[0])
r.text(@offsetX + mm * 20, 31, day[0])
.attr(
font: "12px Monaco, monospace"
fill: "#DDD"
@ -73,7 +73,7 @@ class BranchGraph
if cumonth isnt day[1]
# Months
r.text(offsetX + mm * 20, 11, day[1])
r.text(@offsetX + mm * 20, 11, day[1])
.attr(
font: "12px Monaco, monospace"
fill: "#EEE"
@ -81,61 +81,21 @@ class BranchGraph
cumonth = day[1]
for commit in @commits
x = offsetX + 20 * commit.time
y = offsetY + 10 * commit.space
# Draw dot
r.circle(x, y, 3).attr(
fill: @colors[commit.space]
stroke: "none"
)
x = @offsetX + 20 * commit.time
y = @offsetY + 10 * commit.space
# Draw lines
for parent in commit.parents
parentCommit = @preparedCommits[parent[0]]
parentX = offsetX + 20 * parentCommit.time
parentY1 = offsetY + 10 * parentCommit.space
parentY2 = offsetY + 10 * parent[1]
if parentCommit.space is commit.space and parentCommit.space is parent[1]
r.path(["M", x, y, "L", parentX, parentY1]).attr(
stroke: @colors[parentCommit.space]
"stroke-width": 2
)
@drawDot(x, y, commit)
else if parentCommit.space < commit.space
if y is parentY2
r.path(["M", x - 5, y, "l-5,-2,0,4,5,-2", "L", x - 10, y, "L", x - 15, parentY2, "L", parentX + 5, parentY2, "L", parentX, parentY1]).attr(
stroke: @colors[commit.space]
"stroke-width": 2
)
@drawLines(x, y, commit)
else
r.path(["M", x - 3, y - 6, "l-4,-3,4,-2,0,5", "L", x - 5, y - 10, "L", x - 10, parentY2, "L", parentX + 5, parentY2, "L", parentX, parentY1]).attr(
stroke: @colors[commit.space]
"stroke-width": 2
)
@appendLabel(x, y, commit.refs) if commit.refs
else
r.path(["M", x - 3, y + 6, "l-4,3,4,2,0,-5", "L", x - 5, y + 10, "L", x - 10, parentY2, "L", parentX + 5, parentY2, "L", parentX, parentY1]).attr(
stroke: @colors[parentCommit.space]
"stroke-width": 2
)
@appendAnchor(top, commit, x, y)
@appendLabel x, y, commit.refs if commit.refs
# Mark commit and displayed in the center
if commit.id is @options.commit_id
r.path(["M", x, y - 5, "L", x + 4, y - 15, "L", x - 4, y - 15, "Z"]).attr(
fill: "#000"
"fill-opacity": .7
stroke: "none"
)
scrollLeft = x - graphWidth / 2
@appendAnchor top, commit, x, y
@markCommit(x, y, commit, graphWidth)
top.toFront()
@element.scrollLeft scrollLeft
@element.scrollLeft @scrollLeft
@bindEvents()
bindEvents: ->
@ -211,6 +171,56 @@ class BranchGraph
)
top.push anchor
drawDot: (x, y, commit) ->
r = @raphael
r.circle(x, y, 3).attr(
fill: @colors[commit.space]
stroke: "none"
)
drawLines: (x, y, commit) ->
r = @raphael
for parent in commit.parents
parentCommit = @preparedCommits[parent[0]]
parentX = @offsetX + 20 * parentCommit.time
parentY1 = @offsetY + 10 * parentCommit.space
parentY2 = @offsetY + 10 * parent[1]
if parentCommit.space is commit.space and parentCommit.space is parent[1]
r.path(["M", x, y, "L", parentX, parentY1]).attr(
stroke: @colors[parentCommit.space]
"stroke-width": 2
)
else if parentCommit.space < commit.space
if y is parentY2
r.path(["M", x - 5, y, "l-5,-2,0,4,5,-2", "L", x - 10, y, "L", x - 15, parentY2, "L", parentX + 5, parentY2, "L", parentX, parentY1]).attr(
stroke: @colors[commit.space]
"stroke-width": 2
)
else
r.path(["M", x - 3, y - 6, "l-4,-3,4,-2,0,5", "L", x - 5, y - 10, "L", x - 10, parentY2, "L", parentX + 5, parentY2, "L", parentX, parentY1]).attr(
stroke: @colors[commit.space]
"stroke-width": 2
)
else
r.path(["M", x - 3, y + 6, "l-4,3,4,2,0,-5", "L", x - 5, y + 10, "L", x - 10, parentY2, "L", parentX + 5, parentY2, "L", parentX, parentY1]).attr(
stroke: @colors[parentCommit.space]
"stroke-width": 2
)
markCommit: (x, y, commit, graphWidth) ->
if commit.id is @options.commit_id
r = @raphael
r.path(["M", x, y - 5, "L", x + 4, y - 15, "L", x - 4, y - 15, "Z"]).attr(
fill: "#000"
"fill-opacity": .7
stroke: "none"
)
# Displayed in the center
@scrollLeft = x - graphWidth / 2
Raphael::commitTooltip = (x, y, commit) ->
boxWidth = 300
boxHeight = 200