zitgit 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +0 -1
- data/README.md +11 -2
- data/lib/grit/status.rb +36 -0
- data/lib/zitgit.rb +22 -32
- data/lib/zitgit/helpers/git.rb +37 -0
- data/lib/zitgit/helpers/views.rb +17 -0
- data/lib/zitgit/version.rb +1 -1
- data/public/coffee/application.coffee +139 -24
- data/public/css/app.css +75 -15
- data/public/images/refresh.png +0 -0
- data/public/js/application.js +186 -19
- data/public/scss/app.scss +90 -10
- data/views/commits/detail.slim +14 -4
- data/views/commits/labels.slim +6 -6
- data/views/commits/list.slim +5 -4
- data/views/diffs/image.slim +11 -0
- data/views/diffs/large.slim +12 -0
- data/views/diffs/line.slim +5 -0
- data/views/diffs/list.slim +30 -21
- data/views/index.slim +6 -1
- data/views/layout.slim +1 -0
- data/views/refs/dropdown.slim +2 -1
- data/views/status/added.slim +10 -0
- data/views/status/changed.slim +21 -0
- data/views/status/deleted.slim +9 -0
- data/views/status/list.slim +30 -0
- data/zitgit.gemspec +1 -0
- metadata +30 -3
Binary file
|
data/public/js/application.js
CHANGED
@@ -1,13 +1,32 @@
|
|
1
1
|
(function() {
|
2
|
-
var ChangeCommit, SetHeight, UpdateDiffsWidth;
|
2
|
+
var ChangeBranch, ChangeCommit, CommitArrows, LoadStatus, RefreshContent, RefreshStatus, SelectDiff, SelectRow, SetHeight, SwitchBranch, TableArrows, UpdateDiffsWidth;
|
3
3
|
|
4
4
|
ChangeCommit = function($commit) {
|
5
5
|
var $target_commit;
|
6
6
|
|
7
7
|
$target_commit = $commit.clone();
|
8
8
|
$('.commits-table tr.selected').removeClass('selected');
|
9
|
+
$('.status').removeClass('selected');
|
9
10
|
$commit.parents('tr').addClass('selected');
|
10
11
|
$('.show_commit').html($target_commit);
|
12
|
+
$('.show_commit .diffs li').niceScroll({
|
13
|
+
cursorcolor: '#ccc',
|
14
|
+
cursorwidth: 14
|
15
|
+
});
|
16
|
+
return UpdateDiffsWidth();
|
17
|
+
};
|
18
|
+
|
19
|
+
LoadStatus = function() {
|
20
|
+
var $status_content;
|
21
|
+
|
22
|
+
$('.commits-table tr.selected').removeClass('selected');
|
23
|
+
$('.status').addClass('selected');
|
24
|
+
$status_content = $('.status .status_content').clone();
|
25
|
+
$('.show_commit').html($status_content);
|
26
|
+
$('.show_commit .diffs li').niceScroll({
|
27
|
+
cursorcolor: '#ccc',
|
28
|
+
cursorwidth: 14
|
29
|
+
});
|
11
30
|
return UpdateDiffsWidth();
|
12
31
|
};
|
13
32
|
|
@@ -26,31 +45,178 @@
|
|
26
45
|
});
|
27
46
|
};
|
28
47
|
|
29
|
-
|
48
|
+
SelectDiff = function($diff) {
|
49
|
+
var index;
|
50
|
+
|
51
|
+
$('.show_commit .diff-names .selected').removeClass('selected');
|
52
|
+
$diff.addClass('selected');
|
53
|
+
if ($diff.hasClass('all')) {
|
54
|
+
return $('.show_commit .diffs li').removeClass('hidden');
|
55
|
+
} else {
|
56
|
+
index = $diff.index() - 1;
|
57
|
+
$('.show_commit .diffs li').addClass('hidden');
|
58
|
+
return $('.show_commit .diffs li:eq(' + index + ')').removeClass('hidden');
|
59
|
+
}
|
60
|
+
};
|
61
|
+
|
62
|
+
ChangeBranch = function($link) {
|
63
|
+
var timeout;
|
64
|
+
|
65
|
+
timeout = setTimeout(function() {
|
66
|
+
$('.loader').show();
|
67
|
+
return $('.main').hide();
|
68
|
+
}, 1500);
|
69
|
+
return $.get($link.attr('href'), function(data) {
|
70
|
+
var list_class;
|
71
|
+
|
72
|
+
clearTimeout(timeout);
|
73
|
+
$('.loader').hide();
|
74
|
+
$('.current_branch').text('');
|
75
|
+
if ($link.parents('.ref_label').length) {
|
76
|
+
list_class = $link.parents('.ref_label').attr('data-dropdown-name');
|
77
|
+
$('.dropdown.' + list_class + '').parent('.has-dropdown').find('.current_branch').text($link.text());
|
78
|
+
} else {
|
79
|
+
$link.parents('.has-dropdown').find('.current_branch').text($link.text());
|
80
|
+
}
|
81
|
+
$('.commits-table').replaceWith(data);
|
82
|
+
$('.main').show();
|
83
|
+
return ChangeCommit($('.commits-table tbody tr:first .commit'));
|
84
|
+
});
|
85
|
+
};
|
86
|
+
|
87
|
+
SwitchBranch = function() {
|
30
88
|
$('.top-bar .dropdown li a').on('click', function(e) {
|
31
|
-
|
89
|
+
e.preventDefault();
|
90
|
+
return ChangeBranch($(this));
|
91
|
+
});
|
92
|
+
return $('body').on('click', '.ref_label a', function(e) {
|
93
|
+
e.preventDefault();
|
94
|
+
return ChangeBranch($(this));
|
95
|
+
});
|
96
|
+
};
|
97
|
+
|
98
|
+
RefreshStatus = function() {
|
99
|
+
return $.get('/status/', function(data) {
|
100
|
+
return $('.status').replaceWith(data);
|
101
|
+
});
|
102
|
+
};
|
103
|
+
|
104
|
+
RefreshContent = function() {
|
105
|
+
RefreshStatus();
|
106
|
+
return $('.current_branch').each(function(index) {
|
107
|
+
var branch_name;
|
108
|
+
|
109
|
+
if ($(this).text() !== '') {
|
110
|
+
branch_name = $(this).text();
|
111
|
+
$(this).parent('.has-dropdown').find('.dropdown li a').each(function(index) {
|
112
|
+
if ($(this).text() === branch_name) {
|
113
|
+
ChangeBranch($(this));
|
114
|
+
return false;
|
115
|
+
}
|
116
|
+
});
|
117
|
+
return false;
|
118
|
+
}
|
119
|
+
});
|
120
|
+
};
|
121
|
+
|
122
|
+
SelectRow = function($row) {
|
123
|
+
var current_scroll, offset;
|
32
124
|
|
125
|
+
if ($row.offset().top < $('.history').offset().top) {
|
126
|
+
current_scroll = $('.history').scrollTop();
|
127
|
+
$('.history').scrollTop(current_scroll + $row.offset().top - $('.history').offset().top);
|
128
|
+
}
|
129
|
+
offset = $row.offset().top - $('.history').offset().top;
|
130
|
+
if (offset + $row.outerHeight() > $('.history').outerHeight()) {
|
131
|
+
current_scroll = $('.history').scrollTop();
|
132
|
+
$('.history').scrollTop(current_scroll + offset + $row.outerHeight() - $('.history').outerHeight());
|
133
|
+
}
|
134
|
+
return ChangeCommit($row.find('.commit'));
|
135
|
+
};
|
136
|
+
|
137
|
+
TableArrows = function() {
|
138
|
+
var motions;
|
139
|
+
|
140
|
+
motions = [38, 40, 33, 34, 35, 36];
|
141
|
+
return $('.history').on('keydown', function(e) {
|
142
|
+
var $next, $next_rows;
|
143
|
+
|
144
|
+
if (motions.indexOf(e.keyCode) === -1) {
|
145
|
+
return;
|
146
|
+
}
|
33
147
|
e.preventDefault();
|
34
|
-
|
35
|
-
|
36
|
-
$('.
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
$
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
148
|
+
e.stopPropagation();
|
149
|
+
if (e.keyCode === 38) {
|
150
|
+
$next = $('.commits-table tr.selected').prev();
|
151
|
+
} else if (e.keyCode === 40) {
|
152
|
+
$next = $('.commits-table tr.selected').next();
|
153
|
+
} else if (e.keyCode === 33) {
|
154
|
+
$next_rows = $('.commits-table tr.selected').prevAll();
|
155
|
+
if ($next_rows.length >= 10) {
|
156
|
+
$next = $next_rows.eq(9);
|
157
|
+
} else {
|
158
|
+
$next = $next_rows.last();
|
159
|
+
}
|
160
|
+
} else if (e.keyCode === 34) {
|
161
|
+
$next_rows = $('.commits-table tr.selected').nextAll();
|
162
|
+
if ($next_rows.length >= 10) {
|
163
|
+
$next = $next_rows.eq(9);
|
164
|
+
} else {
|
165
|
+
$next = $next_rows.last();
|
166
|
+
}
|
167
|
+
} else if (e.keyCode === 36) {
|
168
|
+
$next = $('.commits-table tbody tr:first');
|
169
|
+
} else if (e.keyCode === 35) {
|
170
|
+
$next = $('.commits-table tr:last');
|
171
|
+
}
|
172
|
+
if ($next && $next.length > 0) {
|
173
|
+
return SelectRow($next);
|
174
|
+
}
|
48
175
|
});
|
176
|
+
};
|
177
|
+
|
178
|
+
CommitArrows = function() {
|
179
|
+
var motions;
|
180
|
+
|
181
|
+
motions = [38, 40];
|
182
|
+
return $('.show_commit').on('keydown', function(e) {
|
183
|
+
var $next;
|
184
|
+
|
185
|
+
if (motions.indexOf(e.keyCode) === -1) {
|
186
|
+
return;
|
187
|
+
}
|
188
|
+
e.preventDefault();
|
189
|
+
e.stopPropagation();
|
190
|
+
if (e.keyCode === 38) {
|
191
|
+
$next = $('.show_commit .diff-names li.selected').prev();
|
192
|
+
} else if (e.keyCode === 40) {
|
193
|
+
$next = $('.show_commit .diff-names li.selected').next();
|
194
|
+
}
|
195
|
+
if ($next && $next.length > 0) {
|
196
|
+
return SelectDiff($next);
|
197
|
+
}
|
198
|
+
});
|
199
|
+
};
|
200
|
+
|
201
|
+
$(function() {
|
49
202
|
$('.history').on('click', '.commits-table tr', function(e) {
|
50
203
|
return ChangeCommit($(this).find('.commit'));
|
51
204
|
});
|
52
|
-
|
205
|
+
$('.history').on('click', '.status-link', function(e) {
|
206
|
+
e.preventDefault();
|
207
|
+
return LoadStatus();
|
208
|
+
});
|
209
|
+
$('.refresh').on('click', function(e) {
|
210
|
+
e.preventDefault();
|
211
|
+
return RefreshContent();
|
212
|
+
});
|
213
|
+
$('.show_commit').on('click', '.diff-names li', function(e) {
|
214
|
+
return SelectDiff($(this));
|
215
|
+
});
|
216
|
+
SwitchBranch();
|
53
217
|
SetHeight();
|
218
|
+
TableArrows();
|
219
|
+
CommitArrows();
|
54
220
|
$(window).resize(function() {
|
55
221
|
return SetHeight();
|
56
222
|
});
|
@@ -64,10 +230,11 @@
|
|
64
230
|
railalign: 'left',
|
65
231
|
horizrailenabled: false
|
66
232
|
});
|
67
|
-
|
233
|
+
$('.show_commit .diffs li').niceScroll({
|
68
234
|
cursorcolor: '#ccc',
|
69
235
|
cursorwidth: 14
|
70
236
|
});
|
237
|
+
return UpdateDiffsWidth();
|
71
238
|
});
|
72
239
|
|
73
240
|
}).call(this);
|
data/public/scss/app.scss
CHANGED
@@ -2,8 +2,14 @@
|
|
2
2
|
|
3
3
|
.top-bar {
|
4
4
|
z-index: 6;
|
5
|
+
.refresh{
|
6
|
+
img{
|
7
|
+
position: relative;
|
8
|
+
top: 8px;
|
9
|
+
}
|
10
|
+
}
|
5
11
|
}
|
6
|
-
.
|
12
|
+
.main .history.columns{
|
7
13
|
padding: 0 0 0 15px;
|
8
14
|
}
|
9
15
|
.ref_label{
|
@@ -12,15 +18,30 @@
|
|
12
18
|
border-radius: 12px;
|
13
19
|
padding: 2px 4px;
|
14
20
|
float: left;
|
21
|
+
a{
|
22
|
+
color: #000;
|
23
|
+
}
|
15
24
|
}
|
16
25
|
.branch_label{
|
17
|
-
background:
|
26
|
+
background: #ffeeee;
|
27
|
+
border-color: #581313;
|
28
|
+
a{
|
29
|
+
color: #581313;
|
30
|
+
}
|
18
31
|
}
|
19
32
|
.remote_label{
|
20
|
-
background:
|
33
|
+
background: #ffe3e3;
|
34
|
+
border-color: #b32222;
|
35
|
+
a{
|
36
|
+
color: #b32222;
|
37
|
+
}
|
21
38
|
}
|
22
39
|
.tag_label{
|
23
|
-
background: #
|
40
|
+
background: #ffe6bc;
|
41
|
+
border-color: #ff9800;
|
42
|
+
a{
|
43
|
+
color: #ff9800;
|
44
|
+
}
|
24
45
|
}
|
25
46
|
.commits-table{
|
26
47
|
thead{
|
@@ -44,11 +65,22 @@
|
|
44
65
|
font-size: 12px;
|
45
66
|
border-radius: 8px;
|
46
67
|
padding: 0 2px;
|
68
|
+
max-width: 134px;
|
69
|
+
word-wrap: break-word;
|
70
|
+
text-align: center;
|
71
|
+
}
|
72
|
+
.sha{
|
73
|
+
font-size:10px;
|
47
74
|
}
|
48
75
|
}
|
49
76
|
.author{
|
50
77
|
width: 180px;
|
51
78
|
}
|
79
|
+
.message{
|
80
|
+
div{
|
81
|
+
max-height: 56px;
|
82
|
+
}
|
83
|
+
}
|
52
84
|
tbody{
|
53
85
|
tr.selected{
|
54
86
|
background: #c3e2ff;
|
@@ -75,7 +107,8 @@
|
|
75
107
|
padding-top: 14px;
|
76
108
|
list-style-type: none;
|
77
109
|
li{
|
78
|
-
margin-bottom: -
|
110
|
+
margin-bottom: -4px;
|
111
|
+
padding: 0 4px;
|
79
112
|
.new_file{
|
80
113
|
color: green;
|
81
114
|
}
|
@@ -83,10 +116,14 @@
|
|
83
116
|
color: red;
|
84
117
|
}
|
85
118
|
}
|
119
|
+
.selected{
|
120
|
+
background: #a7d5ff;
|
121
|
+
}
|
86
122
|
}
|
87
123
|
.diffs{
|
88
124
|
background: #fff;
|
89
125
|
list-style-type: none;
|
126
|
+
font-family: monospace;
|
90
127
|
li{
|
91
128
|
border-bottom: solid #ddd 8px;
|
92
129
|
overflow-x: scroll;
|
@@ -96,16 +133,19 @@
|
|
96
133
|
}
|
97
134
|
.diff-first-line{
|
98
135
|
font-weight: bold;
|
99
|
-
background: #
|
100
|
-
border-bottom: 1px solid
|
136
|
+
background: #eee;
|
137
|
+
border-bottom: 1px solid #777;
|
101
138
|
}
|
102
139
|
.diff-summ-line{
|
103
|
-
background: #
|
140
|
+
background: #eee;
|
104
141
|
font-weight: bold;
|
105
142
|
}
|
106
143
|
.diff-added-line{
|
107
144
|
color: #096707;
|
108
145
|
background: #87f49f;
|
146
|
+
.trailing{
|
147
|
+
background: #036420;
|
148
|
+
}
|
109
149
|
}
|
110
150
|
.diff-removed-line{
|
111
151
|
position: relative;
|
@@ -113,8 +153,14 @@
|
|
113
153
|
right: 0;
|
114
154
|
color: #742b2b;
|
115
155
|
background: #ffb1cb;
|
156
|
+
.trailing{
|
157
|
+
background: #c10000;
|
158
|
+
}
|
116
159
|
}
|
117
160
|
}
|
161
|
+
img{
|
162
|
+
display: block;
|
163
|
+
}
|
118
164
|
}
|
119
165
|
.hidden{
|
120
166
|
display: none;
|
@@ -126,23 +172,36 @@
|
|
126
172
|
background: #ddd;
|
127
173
|
border-radius: 16px;
|
128
174
|
.author_info{
|
129
|
-
/*width: 50%;*/
|
130
175
|
float: left;
|
131
176
|
font-weight: bold;
|
177
|
+
clear: left;
|
178
|
+
color: #eee;
|
179
|
+
text-shadow: 1px 1px 0px #333, 1px -1px 0px #333, -1px 1px 0px #333, -1px -1px 0px #333;
|
132
180
|
}
|
133
181
|
.commit_sha{
|
134
182
|
margin-bottom:14px;
|
135
|
-
margin-top: -14px;
|
136
183
|
clear: left;
|
184
|
+
float: left;
|
185
|
+
}
|
186
|
+
.commit_date{
|
187
|
+
margin-bottom:14px;
|
188
|
+
float: right;
|
137
189
|
}
|
138
190
|
.stats{
|
139
191
|
float: right;
|
192
|
+
text-align: right;
|
140
193
|
.additions{
|
141
194
|
color: green;
|
142
195
|
}
|
143
196
|
.deletions{
|
144
197
|
color: red;
|
145
198
|
}
|
199
|
+
.merge_commit{
|
200
|
+
font-weight: bold;
|
201
|
+
position: relative;
|
202
|
+
top: 8px;
|
203
|
+
color: #0300ff;
|
204
|
+
}
|
146
205
|
}
|
147
206
|
}
|
148
207
|
}
|
@@ -153,3 +212,24 @@
|
|
153
212
|
background: url('/images/loader.gif') no-repeat;
|
154
213
|
display: none;
|
155
214
|
}
|
215
|
+
.status{
|
216
|
+
margin-bottom: 8px;
|
217
|
+
padding: 4px 0;
|
218
|
+
.status_content{
|
219
|
+
display: none;
|
220
|
+
}
|
221
|
+
.status-link{
|
222
|
+
display: block;
|
223
|
+
font-weight: bold;
|
224
|
+
color: #000;
|
225
|
+
padding-left: 16px;
|
226
|
+
font-size: 20px;
|
227
|
+
}
|
228
|
+
&.selected{
|
229
|
+
background: #c3e2ff;
|
230
|
+
border-bottom: 2px solid #78c3ff;
|
231
|
+
border-top: 2px solid #78c3ff;
|
232
|
+
border-left: 1px solid #78c3ff;
|
233
|
+
border-right: 1px solid #78c3ff;
|
234
|
+
}
|
235
|
+
}
|
data/views/commits/detail.slim
CHANGED
@@ -1,12 +1,22 @@
|
|
1
1
|
.commit
|
2
|
-
h4=commit.message
|
2
|
+
h4=strip_message(commit.message, 120)
|
3
3
|
== slim :'commits/labels', :locals => {commit: commit}, :layout => false
|
4
4
|
.commit_sha =commit.sha
|
5
|
+
.commit_date =commit.date.strftime("%d.%m.%Y %H:%M")
|
5
6
|
.author_info
|
6
7
|
div = commit.author.name
|
7
8
|
div = commit.author.email
|
8
9
|
.stats
|
9
|
-
|
10
|
-
|
10
|
+
- if merge_commit?(commit)
|
11
|
+
div.merge_commit merge
|
12
|
+
-else
|
13
|
+
div.additions = "#{ commit.stats.additions } additions"
|
14
|
+
div.deletions = "#{ commit.stats.deletions } deletions"
|
11
15
|
|
12
|
-
|
16
|
+
- if large_commit?(commit)
|
17
|
+
.diff-names
|
18
|
+
.large
|
19
|
+
=' commit.diffs.count
|
20
|
+
| files changed
|
21
|
+
- else
|
22
|
+
== slim(:'diffs/list', :locals => {diffs: commit.diffs}, :layout => false).force_encoding('utf-8')
|