Commit f5e001bd8cc76fb104a2e7c6e1ac4f6d0c2e8bf0

Authored by Sato Hiroyuki
1 parent 26606aa2

Using arrowed line only if it connects to not first parent.

It is easy to see which branch is merged.
Showing 1 changed file with 44 additions and 43 deletions   Show diff stats
app/assets/javascripts/branch-graph.js.coffee
... ... @@ -191,57 +191,58 @@ class BranchGraph
191 191  
192 192 drawLines: (x, y, commit) ->
193 193 r = @r
194   - for parent in commit.parents
  194 + for parent, i in commit.parents
195 195 parentCommit = @preparedCommits[parent[0]]
196 196 parentY = @offsetY + @unitTime * parentCommit.time
197 197 parentX1 = @offsetX + @unitSpace * (@mspace - parentCommit.space)
198 198 parentX2 = @offsetX + @unitSpace * (@mspace - parent[1])
199 199  
200   - if parentCommit.space is commit.space and parentCommit.space is parent[1]
201   - r.path(["M", x, y, "L", parentX1, parentY]).attr(
202   - stroke: @colors[parentCommit.space]
203   - "stroke-width": 2
204   - )
  200 + # Set line color
  201 + if parentCommit.space <= commit.space
  202 + color = @colors[commit.space]
  203 +
  204 + else
  205 + color = @colors[parentCommit.space]
  206 +
  207 + # Build line shape
  208 + if parent[1] is commit.space
  209 + d1 = [0, 5]
  210 + d2 = [0, 10]
  211 + arrow = "l-2,5,4,0,-2,-5"
205 212  
206   - else if parentCommit.space < commit.space
207   - if x is parentX2
208   - r
209   - .path([
210   - "M", x, y + 5,
211   - "l-2,5,4,0,-2,-5",
212   - "L", x, y + 10,
213   - "L", parentX2, y + 10,
214   - "L", parentX2, parentY - 5,
215   - "L", parentX1, parentY])
216   - .attr(
217   - stroke: @colors[commit.space]
218   - "stroke-width": 2)
219   -
220   - else
221   - r
222   - .path([
223   - "M", x + 3, y + 3,
224   - "l5,0,-2,4,-3,-4",
225   - "L", x + 7, y + 5,
226   - "L", parentX2, y + 10,
227   - "L", parentX2, parentY - 5,
228   - "L", parentX1, parentY])
229   - .attr(
230   - stroke: @colors[commit.space]
231   - "stroke-width": 2)
  213 + else if parent[1] < commit.space
  214 + d1 = [3, 3]
  215 + d2 = [7, 5]
  216 + arrow = "l5,0,-2,4,-3,-4"
232 217  
233 218 else
234   - r
235   - .path([
236   - "M", x - 3, y + 3,
237   - "l-5,0,2,4,3,-4",
238   - "L", x - 7, y + 5,
239   - "L", parentX2, y + 10,
240   - "L", parentX2, parentY - 5,
241   - "L", parentX1, parentY])
242   - .attr(
243   - stroke: @colors[parentCommit.space]
244   - "stroke-width": 2)
  219 + d1 = [-3, 3]
  220 + d2 = [-7, 5]
  221 + arrow = "l-5,0,2,4,3,-4"
  222 +
  223 + # Start point
  224 + route = ["M", x + d1[0], y + d1[1]]
  225 +
  226 + # Add arrow if not first parent
  227 + if i > 0
  228 + route.push(arrow)
  229 +
  230 + # Circumvent if overlap
  231 + if commit.space isnt parentCommit.space or commit.space isnt parent[1]
  232 + route.push(
  233 + "L", x + d2[0], y + d2[1],
  234 + "L", parentX2, y + 10,
  235 + "L", parentX2, parentY - 5,
  236 + )
  237 +
  238 + # End point
  239 + route.push("L", parentX1, parentY)
  240 +
  241 + r
  242 + .path(route)
  243 + .attr(
  244 + stroke: color
  245 + "stroke-width": 2)
245 246  
246 247 markCommit: (x, y, commit, graphHeight) ->
247 248 if commit.id is @options.commit_id
... ...