Commit f5e001bd8cc76fb104a2e7c6e1ac4f6d0c2e8bf0
1 parent
26606aa2
Exists in
master
and in
4 other branches
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 | ... | ... |