Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
iv
gitlab-ce
Commits
1f6b6b6c
Commit
1f6b6b6c
authored
Mar 20, 2013
by
Sato Hiroyuki
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rotating graph orientation.
parent
175e09f1
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
82 additions
and
70 deletions
+82
-70
app/assets/javascripts/branch-graph.js.coffee
app/assets/javascripts/branch-graph.js.coffee
+68
-45
app/models/network/graph.rb
app/models/network/graph.rb
+14
-25
No files found.
app/assets/javascripts/branch-graph.js.coffee
View file @
1f6b6b6c
...
@@ -20,8 +20,6 @@ class BranchGraph
...
@@ -20,8 +20,6 @@ class BranchGraph
prepareData
:
(
@
days
,
@
commits
)
->
prepareData
:
(
@
days
,
@
commits
)
->
@
collectParents
()
@
collectParents
()
@
mtime
+=
4
@
mspace
+=
10
for
c
in
@
commits
for
c
in
@
commits
c
.
isParent
=
true
if
c
.
id
of
@
parents
c
.
isParent
=
true
if
c
.
id
of
@
parents
...
@@ -35,6 +33,7 @@ class BranchGraph
...
@@ -35,6 +33,7 @@ class BranchGraph
@
mspace
=
Math
.
max
(
@
mspace
,
c
.
space
)
@
mspace
=
Math
.
max
(
@
mspace
,
c
.
space
)
for
p
in
c
.
parents
for
p
in
c
.
parents
@
parents
[
p
[
0
]]
=
true
@
parents
[
p
[
0
]]
=
true
@
mspace
=
Math
.
max
(
@
mspace
,
p
[
1
])
collectColors
:
->
collectColors
:
->
k
=
0
k
=
0
...
@@ -46,25 +45,26 @@ class BranchGraph
...
@@ -46,25 +45,26 @@ class BranchGraph
k
++
k
++
buildGraph
:
->
buildGraph
:
->
graphHeight
=
$
(
@
element
).
height
()
graphWidth
=
$
(
@
element
).
width
()
graphWidth
=
$
(
@
element
).
width
()
ch
=
@
mspace
*
10
+
100
ch
=
Math
.
max
(
graphHeight
,
@
mtime
*
20
+
100
)
cw
=
Math
.
max
(
graphWidth
,
@
m
time
*
2
0
+
260
)
cw
=
Math
.
max
(
graphWidth
,
@
m
space
*
1
0
+
260
)
r
=
Raphael
(
@
element
.
get
(
0
),
cw
,
ch
)
r
=
Raphael
(
@
element
.
get
(
0
),
cw
,
ch
)
top
=
r
.
set
()
top
=
r
.
set
()
cuday
=
0
cuday
=
0
cumonth
=
""
cumonth
=
""
@
offsetX
=
20
@
offsetX
=
1
20
@
offsetY
=
5
0
@
offsetY
=
2
0
bar
Width
=
Math
.
max
(
graphWidth
,
@
days
.
length
*
20
+
320
)
bar
Height
=
Math
.
max
(
graphHeight
,
@
days
.
length
*
20
+
320
)
@
scrollLeft
=
cw
@
scrollLeft
=
cw
@
raphael
=
r
@
raphael
=
r
r
.
rect
(
0
,
0
,
barWidth
,
20
).
attr
fill
:
"#222"
r
.
rect
(
0
,
0
,
20
,
barHeight
).
attr
fill
:
"#222"
r
.
rect
(
0
,
20
,
barWidth
,
20
).
attr
fill
:
"#444"
r
.
rect
(
20
,
0
,
20
,
barHeight
).
attr
fill
:
"#444"
for
day
,
mm
in
@
days
for
day
,
mm
in
@
days
if
cuday
isnt
day
[
0
]
if
cuday
isnt
day
[
0
]
# Dates
# Dates
r
.
text
(
@
offsetX
+
mm
*
20
,
3
0
,
day
[
0
])
r
.
text
(
30
,
@
offsetY
+
mm
*
2
0
,
day
[
0
])
.
attr
(
.
attr
(
font
:
"12px Monaco, monospace"
font
:
"12px Monaco, monospace"
fill
:
"#DDD"
fill
:
"#DDD"
...
@@ -73,7 +73,7 @@ class BranchGraph
...
@@ -73,7 +73,7 @@ class BranchGraph
if
cumonth
isnt
day
[
1
]
if
cumonth
isnt
day
[
1
]
# Months
# Months
r
.
text
(
@
offsetX
+
mm
*
20
,
1
0
,
day
[
1
])
r
.
text
(
10
,
@
offsetY
+
mm
*
2
0
,
day
[
1
])
.
attr
(
.
attr
(
font
:
"12px Monaco, monospace"
font
:
"12px Monaco, monospace"
fill
:
"#EEE"
fill
:
"#EEE"
...
@@ -81,8 +81,8 @@ class BranchGraph
...
@@ -81,8 +81,8 @@ class BranchGraph
cumonth
=
day
[
1
]
cumonth
=
day
[
1
]
for
commit
in
@
commits
for
commit
in
@
commits
x
=
@
offsetX
+
20
*
commit
.
time
x
=
@
offsetX
+
10
*
(
@
mspace
-
commit
.
space
)
y
=
@
offsetY
+
10
*
commit
.
spac
e
y
=
@
offsetY
+
20
*
commit
.
tim
e
@
drawDot
(
x
,
y
,
commit
)
@
drawDot
(
x
,
y
,
commit
)
...
@@ -92,10 +92,9 @@ class BranchGraph
...
@@ -92,10 +92,9 @@ class BranchGraph
@
appendAnchor
(
top
,
commit
,
x
,
y
)
@
appendAnchor
(
top
,
commit
,
x
,
y
)
@
markCommit
(
x
,
y
,
commit
,
graph
Width
)
@
markCommit
(
x
,
y
,
commit
,
graph
Height
)
top
.
toFront
()
top
.
toFront
()
@
element
.
scrollLeft
@
scrollLeft
@
bindEvents
()
@
bindEvents
()
bindEvents
:
->
bindEvents
:
->
...
@@ -131,26 +130,28 @@ class BranchGraph
...
@@ -131,26 +130,28 @@ class BranchGraph
shortrefs
=
refs
shortrefs
=
refs
# Truncate if longer than 15 chars
# Truncate if longer than 15 chars
shortrefs
=
shortrefs
.
substr
(
0
,
15
)
+
"…"
if
shortrefs
.
length
>
17
shortrefs
=
shortrefs
.
substr
(
0
,
15
)
+
"…"
if
shortrefs
.
length
>
17
text
=
r
.
text
(
x
+
5
,
y
+
8
+
10
,
shortrefs
).
attr
(
text
=
r
.
text
(
x
+
8
,
y
,
shortrefs
).
attr
(
"text-anchor"
:
"start"
font
:
"10px Monaco, monospace"
font
:
"10px Monaco, monospace"
fill
:
"#FFF"
fill
:
"#FFF"
title
:
refs
title
:
refs
)
)
textbox
=
text
.
getBBox
()
textbox
=
text
.
getBBox
()
text
.
transform
[
"t"
,
textbox
.
height
/ -4, textbox.width /
2
+
5
,
"r90"
]
# Create rectangle based on the size of the textbox
# Create rectangle based on the size of the textbox
rect
=
r
.
rect
(
x
,
y
,
textbox
.
width
+
15
,
textbox
.
height
+
5
,
4
).
attr
(
rect
=
r
.
rect
(
x
,
y
-
7
,
textbox
.
width
+
15
,
textbox
.
height
+
5
,
4
).
attr
(
fill
:
"#000"
fill
:
"#000"
"fill-opacity"
:
.
7
"fill-opacity"
:
.
5
stroke
:
"none"
stroke
:
"none"
)
)
triangle
=
r
.
path
([
"M"
,
x
,
y
+
5
,
"L"
,
x
+
4
,
y
+
15
,
"L"
,
x
-
4
,
y
+
15
,
"Z"
]).
attr
(
triangle
=
r
.
path
([
"M"
,
x
-
5
,
y
,
"L"
,
x
-
15
,
y
-
4
,
"L"
,
x
-
15
,
y
+
4
,
"Z"
]).
attr
(
fill
:
"#000"
fill
:
"#000"
"fill-opacity"
:
.
7
"fill-opacity"
:
.
5
stroke
:
"none"
stroke
:
"none"
)
)
# Rotate and reposition rectangle over text
rect
.
transform
[
"r"
,
90
,
x
,
y
,
"t"
,
15
,
-
9
]
label
=
r
.
set
(
rect
,
text
)
label
.
transform
([
"t"
,
-
rect
.
getBBox
().
width
-
15
,
0
])
# Set text to front
# Set text to front
text
.
toFront
()
text
.
toFront
()
...
@@ -164,7 +165,7 @@ class BranchGraph
...
@@ -164,7 +165,7 @@ class BranchGraph
).
click
(
->
).
click
(
->
window
.
open
options
.
commit_url
.
replace
(
"%s"
,
commit
.
id
),
"_blank"
window
.
open
options
.
commit_url
.
replace
(
"%s"
,
commit
.
id
),
"_blank"
).
hover
(
->
).
hover
(
->
@
tooltip
=
r
.
commitTooltip
(
x
,
y
+
5
,
commit
)
@
tooltip
=
r
.
commitTooltip
(
x
+
5
,
y
,
commit
)
top
.
push
@
tooltip
.
insertBefore
(
this
)
top
.
push
@
tooltip
.
insertBefore
(
this
)
,
->
,
->
@
tooltip
and
@
tooltip
.
remove
()
and
delete
@
tooltip
@
tooltip
and
@
tooltip
.
remove
()
and
delete
@
tooltip
...
@@ -182,44 +183,66 @@ class BranchGraph
...
@@ -182,44 +183,66 @@ class BranchGraph
r
=
@
raphael
r
=
@
raphael
for
parent
in
commit
.
parents
for
parent
in
commit
.
parents
parentCommit
=
@
preparedCommits
[
parent
[
0
]]
parentCommit
=
@
preparedCommits
[
parent
[
0
]]
parentX
=
@
offsetX
+
20
*
parentCommit
.
time
parentY
=
@
offsetY
+
20
*
parentCommit
.
time
parentY1
=
@
offsetY
+
10
*
parentCommit
.
space
parentX1
=
@
offsetX
+
10
*
(
@
mspace
-
parentCommit
.
space
)
parentY2
=
@
offsetY
+
10
*
parent
[
1
]
parentX2
=
@
offsetX
+
10
*
(
@
mspace
-
parent
[
1
])
if
parentCommit
.
space
is
commit
.
space
and
parentCommit
.
space
is
parent
[
1
]
if
parentCommit
.
space
is
commit
.
space
and
parentCommit
.
space
is
parent
[
1
]
r
.
path
([
"M"
,
x
,
y
,
"L"
,
parentX
,
parentY1
]).
attr
(
r
.
path
([
"M"
,
x
,
y
,
"L"
,
parentX
1
,
parentY
]).
attr
(
stroke
:
@
colors
[
parentCommit
.
space
]
stroke
:
@
colors
[
parentCommit
.
space
]
"stroke-width"
:
2
"stroke-width"
:
2
)
)
else
if
parentCommit
.
space
<
commit
.
space
else
if
parentCommit
.
space
<
commit
.
space
if
y
is
parentY2
if
x
is
parentX2
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
(
r
.
path
([
"M"
,
x
,
y
+
5
,
"l-2,5,4,0,-2,-5"
,
"L"
,
x
,
y
+
10
,
"L"
,
parentX2
,
y
+
10
,
"L"
,
parentX2
,
parentY
-
5
,
"L"
,
parentX1
,
parentY
])
.
attr
(
stroke
:
@
colors
[
commit
.
space
]
stroke
:
@
colors
[
commit
.
space
]
"stroke-width"
:
2
"stroke-width"
:
2
)
)
else
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
(
r
.
path
([
"M"
,
x
+
3
,
y
+
3
,
"l5,0,-2,4,-3,-4"
,
"L"
,
x
+
7
,
y
+
5
,
"L"
,
parentX2
,
y
+
10
,
"L"
,
parentX2
,
parentY
-
5
,
"L"
,
parentX1
,
parentY
])
.
attr
(
stroke
:
@
colors
[
commit
.
space
]
stroke
:
@
colors
[
commit
.
space
]
"stroke-width"
:
2
"stroke-width"
:
2
)
)
else
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
(
r
.
path
([
"M"
,
x
-
3
,
y
+
3
,
"l-5,0,2,4,3,-4"
,
"L"
,
x
-
7
,
y
+
5
,
"L"
,
parentX2
,
y
+
10
,
"L"
,
parentX2
,
parentY
-
5
,
"L"
,
parentX1
,
parentY
])
.
attr
(
stroke
:
@
colors
[
parentCommit
.
space
]
stroke
:
@
colors
[
parentCommit
.
space
]
"stroke-width"
:
2
"stroke-width"
:
2
)
)
markCommit
:
(
x
,
y
,
commit
,
graph
Width
)
->
markCommit
:
(
x
,
y
,
commit
,
graph
Height
)
->
if
commit
.
id
is
@
options
.
commit_id
if
commit
.
id
is
@
options
.
commit_id
r
=
@
raphael
r
=
@
raphael
r
.
path
([
"M"
,
x
,
y
-
5
,
"L"
,
x
+
4
,
y
-
15
,
"L"
,
x
-
4
,
y
-
15
,
"Z"
]).
attr
(
r
.
path
([
"M"
,
x
+
5
,
y
,
"L"
,
x
+
15
,
y
+
4
,
"L"
,
x
+
15
,
y
-
4
,
"Z"
]).
attr
(
fill
:
"#000"
fill
:
"#000"
"fill-opacity"
:
.
7
"fill-opacity"
:
.
5
stroke
:
"none"
stroke
:
"none"
)
)
# Displayed in the center
# Displayed in the center
@
scrollLeft
=
x
-
graphWidth
/
2
@
element
.
scrollTop
(
y
-
graphHeight
/
2
)
Raphael
::
commitTooltip
=
(
x
,
y
,
commit
)
->
Raphael
::
commitTooltip
=
(
x
,
y
,
commit
)
->
boxWidth
=
300
boxWidth
=
300
...
...
app/models/network/graph.rb
View file @
1f6b6b6c
...
@@ -40,15 +40,12 @@ module Network
...
@@ -40,15 +40,12 @@ module Network
def
index_commits
def
index_commits
days
=
[]
days
=
[]
@map
=
{}
@map
=
{}
@reserved
=
{}
@commits
.
reverse
.
each_with_index
do
|
c
,
i
|
@commits
.
each_with_index
do
|
c
,
i
|
c
.
time
=
i
c
.
time
=
i
days
[
i
]
=
c
.
committed_date
days
[
i
]
=
c
.
committed_date
@map
[
c
.
id
]
=
c
@map
[
c
.
id
]
=
c
end
@reserved
=
{}
days
.
each_index
do
|
i
|
@reserved
[
i
]
=
[]
@reserved
[
i
]
=
[]
end
end
...
@@ -135,11 +132,7 @@ module Network
...
@@ -135,11 +132,7 @@ module Network
spaces
=
[]
spaces
=
[]
commit
.
parents
(
@map
).
each
do
|
parent
|
commit
.
parents
(
@map
).
each
do
|
parent
|
range
=
if
commit
.
time
<
parent
.
time
then
range
=
commit
.
time
..
parent
.
time
commit
.
time
..
parent
.
time
else
parent
.
time
..
commit
.
time
end
space
=
if
commit
.
space
>=
parent
.
space
then
space
=
if
commit
.
space
>=
parent
.
space
then
find_free_parent_space
(
range
,
parent
.
space
,
-
1
,
commit
.
space
)
find_free_parent_space
(
range
,
parent
.
space
,
-
1
,
commit
.
space
)
...
@@ -166,7 +159,7 @@ module Network
...
@@ -166,7 +159,7 @@ module Network
range
.
each
do
|
i
|
range
.
each
do
|
i
|
if
i
!=
range
.
first
&&
if
i
!=
range
.
first
&&
i
!=
range
.
last
&&
i
!=
range
.
last
&&
@commits
[
reversed_index
(
i
)
].
spaces
.
include?
(
overlap_space
)
then
@commits
[
i
].
spaces
.
include?
(
overlap_space
)
then
return
true
;
return
true
;
end
end
...
@@ -184,7 +177,7 @@ module Network
...
@@ -184,7 +177,7 @@ module Network
return
return
end
end
time_range
=
leaves
.
last
.
time
..
leaves
.
fir
st
.
time
time_range
=
leaves
.
first
.
time
..
leaves
.
la
st
.
time
space_base
=
get_space_base
(
leaves
)
space_base
=
get_space_base
(
leaves
)
space
=
find_free_space
(
time_range
,
2
,
space_base
)
space
=
find_free_space
(
time_range
,
2
,
space_base
)
leaves
.
each
do
|
l
|
leaves
.
each
do
|
l
|
...
@@ -198,17 +191,17 @@ module Network
...
@@ -198,17 +191,17 @@ module Network
end
end
# and mark it as reserved
# and mark it as reserved
min_time
=
leaves
.
last
.
time
leaves
.
last
.
parents
(
@map
).
each
do
|
parent
|
if
parent
.
time
<
min_time
min_time
=
parent
.
time
end
end
if
parent_time
.
nil?
if
parent_time
.
nil?
m
ax
_time
=
leaves
.
first
.
time
m
in
_time
=
leaves
.
first
.
time
else
else
max_time
=
parent_time
-
1
min_time
=
parent_time
+
1
end
max_time
=
leaves
.
last
.
time
leaves
.
last
.
parents
(
@map
).
each
do
|
parent
|
if
max_time
<
parent
.
time
max_time
=
parent
.
time
end
end
end
mark_reserved
(
min_time
..
max_time
,
space
)
mark_reserved
(
min_time
..
max_time
,
space
)
...
@@ -289,9 +282,5 @@ module Network
...
@@ -289,9 +282,5 @@ module Network
end
end
refs_cache
refs_cache
end
end
def
reversed_index
(
index
)
-
index
-
1
end
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment