-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
125 lines (92 loc) · 3.14 KB
/
script.js
File metadata and controls
125 lines (92 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
$(document).ready(function(){
$("#addTextarea").click(function(){$(this).before("<textarea class=\"input\"></textarea><br>");});
$("#showGraphButton").click(function(){
var data = [];
$("textarea.input").each(function(){
var newData = JSON.parse($(this).val());
if(newData && newData.commits.constructor === Array) data = data.concat(newData.commits);
});
data.sort(function(a,b){return a.time - b.time;});
if(!data.length) return;
var branchNames = ["master"];
var parentBranch = {};
var template = $("#theme").val();
if(template === "smallhill"){
template = new GitGraph.Template({
arrow: {active:true},
colors: ["#000000","#3498db", "#2ecc71", "#8e44ad","#f1c40f","#e67e22","#e74c3c"],
branch: {
lineWidth: 10,
spacingX: 50,
labelRotation: 0
},
commit: {
spacingY: -80,
dot: {
size: 14
},
message: {
font: "normal 14pt Arial",
display:true,
messageAuthorDisplay: false,
messageBranchDisplay: false,
messageHashDisplay: true
},
shouldDisplayTooltipsInCompactMode: false, // default = true
tooltipHTMLFormatter: function (commit) {
return commit.message;
}
}
});
}
var gitgraph = new GitGraph({
template: template,
orientation: $("#orientation").val(),
mode: $("#display").val()
});
function getBranch(parent){
if(parentBranch[parent]) return parentBranch[parent];
return createBranch(null,branchNames.pop() || "branch");
}
function createCommit(branch,commit){
return branch.commit({
"sha1": commit.id,
"message": commit.message
});
}
function createBranch(branch,space){
return gitgraph.branch({
parentBranch: branch,
name: branchNames.pop() || "branch " + space,
column: space
});
}
var commit;
while(commit = data.shift()){
var branch;
if(commit.parents.length === 0){
branch = parentBranch[commit.id] = createBranch(null,commit.space);
createCommit(branch,commit);
}
if(commit.parents.length === 1 && commit.space === commit.parents[0][2]){
branch = parentBranch[commit.id] = getBranch(commit.parents[0][0]);
createCommit(branch,commit);
}
if(commit.parents.length === 1 && commit.space !== commit.parents[0][2]){
branch = parentBranch[commit.id] = createBranch(getBranch(commit.parents[0][0]),commit.space);
createCommit(branch,commit);
}
if(commit.parents.length === 2){
if(commit.space === commit.parents[0][2]){
branch = getBranch(commit.parents[0][0]);
getBranch(commit.parents[1][0]).merge(branch,{ message: commit.message });
}
else{
branch = createBranch(getBranch(commit.parents[0][0]),commit.space);
getBranch(commit.parents[1][0]).merge(branch,{ message: commit.message });
}
parentBranch[commit.id] = branch;
}
}
});
});