##// END OF EJS Templates
ux: show multiple tags/branches in changelog/summary instead of truncating
dan -
r786:6387ba98 default
parent child Browse files
Show More
@@ -1,521 +1,523 b''
1 1
2 2 // tables.less
3 3 // For use in RhodeCode application tables;
4 4 // see style guide documentation for guidelines.
5 5
6 6 // TABLES
7 7
8 8 .rctable,
9 9 table.rctable,
10 10 table.dataTable {
11 11 clear:both;
12 12 width: 100%;
13 13 margin: 0 auto @padding;
14 14 padding: 0;
15 15 vertical-align: baseline;
16 16 line-height:1.5em;
17 17 border: none;
18 18 outline: none;
19 19 border-collapse: collapse;
20 20 border-spacing: 0;
21 21 color: @grey2;
22 22
23 23 b {
24 24 font-weight: normal;
25 25 }
26 26
27 27 em {
28 28 font-weight: bold;
29 29 font-style: normal;
30 30 }
31 31
32 32 th,
33 33 td {
34 34 height: auto;
35 35 max-width: 20%;
36 36 padding: .65em 1em .65em 0;
37 37 vertical-align: middle;
38 38 border-bottom: @border-thickness solid @grey5;
39 39 white-space: normal;
40 40
41 41 &.td-radio,
42 42 &.td-checkbox {
43 43 padding-right: 0;
44 44 text-align: center;
45 45
46 46 input {
47 47 margin: 0 1em;
48 48 }
49 49 }
50 50
51 51 &.truncate-wrap {
52 52 white-space: nowrap !important;
53 53 }
54 54
55 55 pre {
56 56 margin: 0;
57 57 }
58 58
59 59 .show_more {
60 60 height: inherit;
61 61 }
62 62 }
63 63
64 64 .expired td {
65 65 background-color: @grey7;
66 66 }
67 67
68 68 .td-radio + .td-owner {
69 69 padding-left: 1em;
70 70 }
71 71
72 72
73 73 th {
74 74 text-align: left;
75 75 font-family: @text-semibold;
76 76 }
77 77
78 78 .hl {
79 79 td {
80 80 background-color: lighten(@alert4,25%);
81 81 }
82 82 }
83 83
84 84 // Special Data Cell Types
85 85 // See style guide for desciptions and examples.
86 86
87 87 td {
88 88
89 89 &.user {
90 90 padding-left: 1em;
91 91 }
92 92
93 93 &.td-rss {
94 94 width: 20px;
95 95 min-width: 0;
96 96 margin: 0;
97 97 }
98 98
99 99 &.quick_repo_menu {
100 100 width: 15px;
101 101 text-align: center;
102 102
103 103 &:hover {
104 104 background-color: @grey5;
105 105 }
106 106 }
107 107
108 108 &.td-hash {
109 109 min-width: 80px;
110 110 width: 200px;
111 111 }
112 112
113 113 &.td-time {
114 114 width: 160px;
115 115 white-space: nowrap;
116 116 }
117 117
118 118 &.annotate{
119 119 padding-right: 0;
120 120
121 121 div.annotatediv{
122 122 margin: 0 0.7em;
123 123 }
124 124 }
125 125
126 126 &.tags-col {
127 127 padding-right: 0;
128 128 }
129 129
130 130 &.td-description {
131 131 min-width: 350px;
132 132 }
133 133
134 134 &.td-componentname {
135 135 white-space: nowrap;
136 136 }
137 137
138 138 &.td-journalaction {
139 139 min-width: 300px;
140 140
141 141 .journal_action_params {
142 142 // waiting for feedback
143 143 }
144 144 }
145 145
146 146 &.td-active {
147 147 padding-left: .65em;
148 148 }
149 149
150 150 &.td-url {
151 151 white-space: nowrap;
152 152 }
153 153
154 154 &.td-comments {
155 155 min-width: 3em;
156 156 }
157 157
158 158 &.td-buttons {
159 159 padding: .3em 0;
160 160 }
161 161
162 162 &.td-action {
163 163 // this is for the remove/delete/edit buttons
164 164 padding-right: 0;
165 165 min-width: 95px;
166 166 text-transform: capitalize;
167 167
168 168 i {
169 169 display: none;
170 170 }
171 171 }
172 172
173 173 // TODO: lisa: this needs to be cleaned up with the buttons
174 174 .grid_edit,
175 175 .grid_delete {
176 176 display: inline-block;
177 177 margin: 0 @padding/3 0 0;
178 178 font-family: @text-light;
179 179
180 180 i {
181 181 display: none;
182 182 }
183 183 }
184 184
185 185 .grid_edit + .grid_delete {
186 186 border-left: @border-thickness solid @grey5;
187 187 padding-left: @padding/2;
188 188 }
189 189
190 190 &.td-compare {
191 191
192 192 input {
193 193 margin-right: 1em;
194 194 }
195 195
196 196 .compare-radio-button {
197 197 margin: 0 1em 0 0;
198 198 }
199 199
200 200
201 201 }
202 202
203 203 &.td-tags {
204 204 padding: .5em 1em .5em 0;
205 width: 140px;
205 206
206 207 .tag {
207 208 margin: 1px;
209 float: left;
208 210 }
209 211 }
210 212
211 213 .icon-svn, .icon-hg, .icon-git {
212 214 font-size: 1.4em;
213 215 }
214 216
215 217 &.collapse_commit,
216 218 &.expand_commit {
217 219 padding-right: 0;
218 220 padding-left: 1em;
219 221 }
220 222 }
221 223
222 224 .perm_admin_row {
223 225 color: @grey4;
224 226 background-color: @grey6;
225 227 }
226 228
227 229 .noborder {
228 230 border: none;
229 231
230 232 td {
231 233 border: none;
232 234 }
233 235 }
234 236 }
235 237
236 238 // TRUNCATING
237 239 // TODO: lisaq: should this possibly be moved out of tables.less?
238 240 // for truncated text
239 241 // used inside of table cells and in code block headers
240 242 .truncate-wrap {
241 243 white-space: nowrap !important;
242 244
243 245 //truncated text
244 246 .truncate {
245 247 max-width: 450px;
246 248 width: 300px;
247 249 overflow: hidden;
248 250 text-overflow: ellipsis;
249 251 -o-text-overflow: ellipsis;
250 252 -ms-text-overflow: ellipsis;
251 253
252 254 &.autoexpand {
253 255 width: 120px;
254 256 margin-right: 200px;
255 257 }
256 258 }
257 259 &:hover .truncate.autoexpand {
258 260 overflow: visible;
259 261 }
260 262
261 263 .tags-truncate {
262 264 width: 150px;
263 265 height: 22px;
264 266 overflow: hidden;
265 267
266 268 .tag {
267 269 display: inline-block;
268 270 }
269 271
270 272 &.truncate {
271 273 height: 22px;
272 274 max-height:2em;
273 275 width: 140px;
274 276 }
275 277 }
276 278 }
277 279
278 280 .apikeys_wrap {
279 281 margin-bottom: @padding;
280 282
281 283 table.rctable td:first-child {
282 284 width: 340px;
283 285 }
284 286 }
285 287
286 288
287 289
288 290 // SPECIAL CASES
289 291
290 292 // Repository Followers
291 293 table.rctable.followers_data {
292 294 width: 75%;
293 295 margin: 0;
294 296 }
295 297
296 298 // Repository List
297 299 // Group Members List
298 300 table.rctable.group_members,
299 301 table#repo_list_table {
300 302 min-width: 600px;
301 303 }
302 304
303 305 // Keyboard mappings
304 306 table.keyboard-mappings {
305 307 th {
306 308 text-align: left;
307 309 font-family: @text-semibold;
308 310 }
309 311 }
310 312
311 313 // Branches, Tags, and Bookmarks
312 314 #obj_list_table.dataTable {
313 315 td.td-time {
314 316 padding-right: 1em;
315 317 }
316 318 }
317 319
318 320 // User Admin
319 321 .rctable.useremails,
320 322 .rctable.account_emails {
321 323 .tag,
322 324 .btn {
323 325 float: right;
324 326 }
325 327 .btn { //to line up with tags
326 328 margin-right: 1.65em;
327 329 }
328 330 }
329 331
330 332 // User List
331 333 #user_list_table {
332 334
333 335 td.td-user {
334 336 min-width: 100px;
335 337 }
336 338 }
337 339
338 340 // Pull Request List Table
339 341 #pull_request_list_table.dataTable {
340 342
341 343 //TODO: lisa: This needs to be removed once the description is adjusted
342 344 // for using an expand_commit button (see issue 765)
343 345 td {
344 346 vertical-align: middle;
345 347 }
346 348 }
347 349
348 350 // Settings (no border)
349 351 table.rctable.dl-settings {
350 352 td {
351 353 border: none;
352 354 }
353 355 }
354 356
355 357
356 358 // Statistics
357 359 table.trending_language_tbl {
358 360 width: 100%;
359 361 line-height: 1em;
360 362
361 363 td div {
362 364 overflow: visible;
363 365 }
364 366 }
365 367
366 368 .trending_language_tbl, .trending_language_tbl td {
367 369 border: 0;
368 370 margin: 0;
369 371 padding: 0;
370 372 background: transparent;
371 373 }
372 374
373 375 .trending_language_tbl, .trending_language_tbl tr {
374 376 border-spacing: 0 3px;
375 377 }
376 378
377 379 .trending_language {
378 380 position: relative;
379 381 width: 100%;
380 382 height: 19px;
381 383 overflow: hidden;
382 384 background-color: @grey6;
383 385
384 386 span, b{
385 387 position: absolute;
386 388 display: block;
387 389 height: 12px;
388 390 margin-bottom: 0px;
389 391 white-space: pre;
390 392 padding: floor(@basefontsize/4);
391 393 top: 0;
392 394 left: 0;
393 395 }
394 396
395 397 span{
396 398 color: @text-color;
397 399 z-index: 0;
398 400 min-width: 20px;
399 401 }
400 402
401 403 b {
402 404 z-index: 1;
403 405 overflow: hidden;
404 406 background-color: @rcblue;
405 407 color: #FFF;
406 408 text-decoration: none;
407 409 }
408 410
409 411 }
410 412
411 413 // Changesets
412 414 #changesets.rctable {
413 415
414 416 // td must be fixed height for graph
415 417 td {
416 418 height: 32px;
417 419 padding: 0 1em 0 0;
418 420 vertical-align: middle;
419 421 white-space: nowrap;
420 422
421 423 &.td-description {
422 424 white-space: normal;
423 425 }
424 426
425 427 &.expand_commit {
426 428 padding-right: 0;
427 429 }
428 430 }
429 431 }
430 432
431 433 // Compare
432 434 table.compare_view_commits {
433 435 margin-top: @space;
434 436
435 437 td.td-time {
436 438 padding-left: .5em;
437 439 }
438 440
439 441 tr:hover {
440 442 cursor: pointer;
441 443
442 444 td {
443 445 background-color: lighten(@alert4,25%);
444 446 }
445 447 }
446 448 }
447 449
448 450 .file_history {
449 451 td.td-actions {
450 452 text-align: right;
451 453 }
452 454 }
453 455
454 456 .compare_view_files {
455 457
456 458 td.td-actions {
457 459 text-align: right;
458 460 }
459 461
460 462 .flag_status {
461 463 margin: 0 0 0 5px;
462 464 }
463 465
464 466 td.injected_diff {
465 467
466 468 .code-difftable {
467 469 border:none;
468 470 }
469 471
470 472 .diff-container {
471 473 border: @border-thickness solid @border-default-color;
472 474 .border-radius(@border-radius);
473 475 }
474 476
475 477 div.diffblock {
476 478 border:none;
477 479 }
478 480
479 481 div.code-body {
480 482 max-width: 1152px;
481 483 }
482 484 }
483 485
484 486 .rctable {
485 487
486 488 td {
487 489 padding-top: @space;
488 490 }
489 491
490 492 &:first-child td {
491 493 padding-top: 0;
492 494 }
493 495 }
494 496
495 497 .comment-bubble,
496 498 .show_comments {
497 499 float: right;
498 500 visibility: hidden;
499 501 padding: 0 1em 0 0;
500 502 }
501 503
502 504 .injected_diff {
503 505 padding-bottom: @padding;
504 506 }
505 507 }
506 508
507 509 // Gist List
508 510 #gist_list_table {
509 511 td {
510 512 vertical-align: middle;
511 513
512 514 div{
513 515 display: inline-block;
514 516 vertical-align: middle;
515 517 }
516 518
517 519 img{
518 520 vertical-align: middle;
519 521 }
520 522 }
521 523 }
@@ -1,418 +1,418 b''
1 1 ## -*- coding: utf-8 -*-
2 2
3 3 <%inherit file="/base/base.html"/>
4 4
5 5 <%def name="title()">
6 6 ${_('%s Changelog') % c.repo_name}
7 7 %if c.changelog_for_path:
8 8 /${c.changelog_for_path}
9 9 %endif
10 10 %if c.rhodecode_name:
11 11 &middot; ${h.branding(c.rhodecode_name)}
12 12 %endif
13 13 </%def>
14 14
15 15 <%def name="breadcrumbs_links()">
16 16 %if c.changelog_for_path:
17 17 /${c.changelog_for_path}
18 18 %endif
19 19 ${ungettext('showing %d out of %d commit', 'showing %d out of %d commits', c.showing_commits) % (c.showing_commits, c.total_cs)}
20 20 </%def>
21 21
22 22 <%def name="menu_bar_nav()">
23 23 ${self.menu_items(active='repositories')}
24 24 </%def>
25 25
26 26 <%def name="menu_bar_subnav()">
27 27 ${self.repo_menu(active='changelog')}
28 28 </%def>
29 29
30 30 <%def name="main()">
31 31
32 32 <div class="box">
33 33 <div class="title">
34 34 ${self.repo_page_title(c.rhodecode_db_repo)}
35 35 <ul class="links">
36 36 <li>
37 37 <a href="#" class="btn btn-small" id="rev_range_container" style="display:none;"></a>
38 38 %if c.rhodecode_db_repo.fork:
39 39 <span>
40 40 <a id="compare_fork_button"
41 41 title="${_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name)}"
42 42 class="btn btn-small"
43 43 href="${h.url('compare_url',
44 44 repo_name=c.rhodecode_db_repo.fork.repo_name,
45 45 source_ref_type=c.rhodecode_db_repo.landing_rev[0],
46 46 source_ref=c.rhodecode_db_repo.landing_rev[1],
47 47 target_repo=c.repo_name,
48 48 target_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_rev[0],
49 49 target_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_rev[1],
50 50 merge=1)
51 51 }">
52 52 <i class="icon-loop"></i>
53 53 ${_('Compare fork with Parent (%s)' % c.rhodecode_db_repo.fork.repo_name)}
54 54 </a>
55 55 </span>
56 56 %endif
57 57
58 58 ## pr open link
59 59 %if h.is_hg(c.rhodecode_repo) or h.is_git(c.rhodecode_repo):
60 60 <span>
61 61 <a id="open_new_pull_request" class="btn btn-small btn-success" href="${h.url('pullrequest_home',repo_name=c.repo_name)}">
62 62 ${_('Open new pull request')}
63 63 </a>
64 64 </span>
65 65 %endif
66 66
67 67 ## clear selection
68 68 <div title="${_('Clear selection')}" class="btn" id="rev_range_clear" style="display:none">
69 69 ${_('Clear selection')}
70 70 </div>
71 71
72 72 </li>
73 73 </ul>
74 74 </div>
75 75
76 76 % if c.pagination:
77 77
78 78 <div class="graph-header">
79 79 <div id="filter_changelog">
80 80 ${h.hidden('branch_filter')}
81 81 %if c.selected_name:
82 82 <div class="btn btn-default" id="clear_filter" >
83 83 ${_('Clear filter')}
84 84 </div>
85 85 %endif
86 86 </div>
87 87 ${self.breadcrumbs('breadcrumbs_light')}
88 88 </div>
89 89
90 90 <div id="graph">
91 91 <div class="graph-col-wrapper">
92 92 <div id="graph_nodes">
93 93 <div id="graph_canvas" data-graph='${c.jsdata|n}'></div>
94 94 </div>
95 95 <div id="graph_content" class="main-content graph_full_width">
96 96
97 97 <div class="table">
98 98 <table id="changesets" class="rctable">
99 99 <tr>
100 100 ## checkbox
101 101 <th></th>
102 102 <th colspan="2"></th>
103 103
104 104 <th>${_('Commit')}</th>
105 105 ## commit message expand arrow
106 106 <th></th>
107 107 <th>${_('Commit Message')}</th>
108 108
109 109 <th>${_('Age')}</th>
110 110 <th>${_('Author')}</th>
111 111
112 112 <th>${_('Refs')}</th>
113 113 </tr>
114 114 <tbody>
115 115 %for cnt,commit in enumerate(c.pagination):
116 116 <tr id="chg_${cnt+1}" class="container ${'tablerow%s' % (cnt%2)}">
117 117
118 118 <td class="td-checkbox">
119 119 ${h.checkbox(commit.raw_id,class_="commit-range")}
120 120 </td>
121 121 <td class="td-status">
122 122
123 123 %if c.statuses.get(commit.raw_id):
124 124 <div class="changeset-status-ico">
125 125 %if c.statuses.get(commit.raw_id)[2]:
126 126 <a class="tooltip" title="${_('Commit status: %s\nClick to open associated pull request #%s') % (h.commit_status_lbl(c.statuses.get(commit.raw_id)[0]), c.statuses.get(commit.raw_id)[2])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(commit.raw_id)[3],pull_request_id=c.statuses.get(commit.raw_id)[2])}">
127 127 <div class="${'flag_status %s' % c.statuses.get(commit.raw_id)[0]}"></div>
128 128 </a>
129 129 %else:
130 130 <a class="tooltip" title="${_('Commit status: %s') % h.commit_status_lbl(c.statuses.get(commit.raw_id)[0])}" href="${h.url('changeset_home',repo_name=c.repo_name,revision=commit.raw_id,anchor='comment-%s' % c.comments[commit.raw_id][0].comment_id)}">
131 131 <div class="${'flag_status %s' % c.statuses.get(commit.raw_id)[0]}"></div>
132 132 </a>
133 133 %endif
134 134 </div>
135 135 %else:
136 136 <div class="tooltip flag_status not_reviewed" title="${_('Commit status: Not Reviewed')}"></div>
137 137 %endif
138 138 </td>
139 139 <td class="td-comments comments-col">
140 140 %if c.comments.get(commit.raw_id):
141 141 <a title="${_('Commit has comments')}" href="${h.url('changeset_home',repo_name=c.repo_name,revision=commit.raw_id,anchor='comment-%s' % c.comments[commit.raw_id][0].comment_id)}">
142 142 <i class="icon-comment icon-comment-colored"></i> ${len(c.comments[commit.raw_id])}
143 143 </a>
144 144 %endif
145 145 </td>
146 146 <td class="td-hash">
147 147 <code>
148 148 <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=commit.raw_id)}">
149 149 <span class="commit_hash">${h.show_id(commit)}</span>
150 150 </a>
151 151 </code>
152 152 </td>
153 153 <td class="td-message expand_commit" data-commit-id="${commit.raw_id}" title="${_('Expand commit message')}">
154 154 <div class="show_more_col">
155 155 <i class="show_more"></i>&nbsp;
156 156 </div>
157 157 </td>
158 158 <td class="td-description mid">
159 159 <div class="log-container truncate-wrap">
160 160 <div class="message truncate" id="c-${commit.raw_id}">${h.urlify_commit_message(commit.message, c.repo_name)}</div>
161 161 </div>
162 162 </td>
163 163
164 164 <td class="td-time">
165 165 ${h.age_component(commit.date)}
166 166 </td>
167 167 <td class="td-user">
168 168 ${self.gravatar_with_user(commit.author)}
169 169 </td>
170 170
171 <td class="td-tags tags-col truncate-wrap">
172 <div class="truncate tags-truncate" id="t-${commit.raw_id}">
171 <td class="td-tags tags-col">
172 <div id="t-${commit.raw_id}">
173 173 ## branch
174 174 %if commit.branch:
175 175 <span class="branchtag tag" title="${_('Branch %s') % commit.branch}">
176 176 <a href="${h.url('changelog_home',repo_name=c.repo_name,branch=commit.branch)}"><i class="icon-code-fork"></i>${h.shorter(commit.branch)}</a>
177 177 </span>
178 178 %endif
179 179
180 180 ## bookmarks
181 181 %if h.is_hg(c.rhodecode_repo):
182 182 %for book in commit.bookmarks:
183 183 <span class="tag booktag" title="${_('Bookmark %s') % book}">
184 184 <a href="${h.url('files_home',repo_name=c.repo_name,revision=commit.raw_id)}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
185 185 </span>
186 186 %endfor
187 187 %endif
188 188
189 189 ## tags
190 190 %for tag in commit.tags:
191 191 <span class="tagtag tag" title="${_('Tag %s') % tag}">
192 192 <a href="${h.url('files_home',repo_name=c.repo_name,revision=commit.raw_id)}"><i class="icon-tag"></i>${h.shorter(tag)}</a>
193 193 </span>
194 194 %endfor
195 195
196 196 </div>
197 197 </td>
198 198 </tr>
199 199 %endfor
200 200 </tbody>
201 201 </table>
202 202 </div>
203 203 </div>
204 204 </div>
205 205 <div class="pagination-wh pagination-left">
206 206 ${c.pagination.pager('$link_previous ~2~ $link_next')}
207 207 </div>
208 208
209 209 <script type="text/javascript" src="${h.asset('js/jquery.commits-graph.js')}"></script>
210 210 <script type="text/javascript">
211 211 var cache = {};
212 212 $(function(){
213 213
214 214 // Create links to commit ranges when range checkboxes are selected
215 215 var $commitCheckboxes = $('.commit-range');
216 216 // cache elements
217 217 var $commitRangeContainer = $('#rev_range_container');
218 218 var $commitRangeClear = $('#rev_range_clear');
219 219
220 220 var checkboxRangeSelector = function(e){
221 221 var selectedCheckboxes = [];
222 222 for (pos in $commitCheckboxes){
223 223 if($commitCheckboxes[pos].checked){
224 224 selectedCheckboxes.push($commitCheckboxes[pos]);
225 225 }
226 226 }
227 227 var open_new_pull_request = $('#open_new_pull_request');
228 228 if(open_new_pull_request){
229 229 var selected_changes = selectedCheckboxes.length;
230 230 if (selected_changes > 1 || selected_changes == 1 && templateContext.repo_type != 'hg') {
231 231 open_new_pull_request.hide();
232 232 } else {
233 233 if (selected_changes == 1) {
234 234 open_new_pull_request.html(_gettext('Open new pull request for selected commit'));
235 235 } else if (selected_changes == 0) {
236 236 open_new_pull_request.html(_gettext('Open new pull request'));
237 237 }
238 238 open_new_pull_request.show();
239 239 }
240 240 }
241 241
242 242 if (selectedCheckboxes.length>0){
243 243 var revEnd = selectedCheckboxes[0].name;
244 244 var revStart = selectedCheckboxes[selectedCheckboxes.length-1].name;
245 245 var url = pyroutes.url('changeset_home',
246 246 {'repo_name': '${c.repo_name}',
247 247 'revision': revStart+'...'+revEnd});
248 248
249 249 var link = (revStart == revEnd)
250 250 ? _gettext('Show selected commit __S')
251 251 : _gettext('Show selected commits __S ... __E');
252 252
253 253 link = link.replace('__S', revStart.substr(0,6));
254 254 link = link.replace('__E', revEnd.substr(0,6));
255 255
256 256 $commitRangeContainer
257 257 .attr('href',url)
258 258 .html(link)
259 259 .show();
260 260
261 261 $commitRangeClear.show();
262 262 var _url = pyroutes.url('pullrequest_home',
263 263 {'repo_name': '${c.repo_name}',
264 264 'commit': revEnd});
265 265 open_new_pull_request.attr('href', _url);
266 266 $('#compare_fork_button').hide();
267 267 } else {
268 268 $commitRangeContainer.hide();
269 269 $commitRangeClear.hide();
270 270
271 271 %if c.branch_name:
272 272 var _url = pyroutes.url('pullrequest_home',
273 273 {'repo_name': '${c.repo_name}',
274 274 'branch':'${c.branch_name}'});
275 275 open_new_pull_request.attr('href', _url);
276 276 %else:
277 277 var _url = pyroutes.url('pullrequest_home',
278 278 {'repo_name': '${c.repo_name}'});
279 279 open_new_pull_request.attr('href', _url);
280 280 %endif
281 281 $('#compare_fork_button').show();
282 282 }
283 283 };
284 284
285 285 $commitCheckboxes.on('click', checkboxRangeSelector);
286 286
287 287 $commitRangeClear.on('click',function(e) {
288 288 $commitCheckboxes.attr('checked', false)
289 289 checkboxRangeSelector();
290 290 e.preventDefault();
291 291 });
292 292
293 293 // make sure the buttons are consistent when navigate back and forth
294 294 checkboxRangeSelector();
295 295
296 296
297 297 var msgs = $('.message');
298 298 // get first element height
299 299 var el = $('#graph_content .container')[0];
300 300 var row_h = el.clientHeight;
301 301 for (var i=0; i < msgs.length; i++) {
302 302 var m = msgs[i];
303 303
304 304 var h = m.clientHeight;
305 305 var pad = $(m).css('padding');
306 306 if (h > row_h) {
307 307 var offset = row_h - (h+12);
308 308 $(m.nextElementSibling).css('display','block');
309 309 $(m.nextElementSibling).css('margin-top',offset+'px');
310 310 }
311 311 }
312 312
313 313 $('.expand_commit').on('click',function(e){
314 314 var target_expand = $(this);
315 315 var cid = target_expand.data('commitId');
316 316
317 317 if (target_expand.hasClass('open')){
318 318 $('#c-'+cid).css({'height': '1.5em', 'white-space': 'nowrap', 'text-overflow': 'ellipsis', 'overflow':'hidden'});
319 319 $('#t-'+cid).css({'height': 'auto', 'line-height': '.9em', 'text-overflow': 'ellipsis', 'overflow':'hidden', 'white-space':'nowrap'});
320 320 target_expand.removeClass('open');
321 321 }
322 322 else {
323 323 $('#c-'+cid).css({'height': 'auto', 'white-space': 'pre-line', 'text-overflow': 'initial', 'overflow':'visible'});
324 324 $('#t-'+cid).css({'height': 'auto', 'max-height': 'none', 'text-overflow': 'initial', 'overflow':'visible', 'white-space':'normal'});
325 325 target_expand.addClass('open');
326 326 }
327 327 // redraw the graph
328 328 graph_options.height = $("#changesets").height();
329 329 $("canvas").remove();
330 330 $("[data-graph]").commits(graph_options);
331 331 });
332 332
333 333 $("#clear_filter").on("click", function() {
334 334 var filter = {'repo_name': '${c.repo_name}'};
335 335 window.location = pyroutes.url('changelog_home', filter);
336 336 });
337 337
338 338 $("#branch_filter").select2({
339 339 'dropdownAutoWidth': true,
340 340 'width': 'resolve',
341 341 'placeholder': "${c.selected_name or _('Filter changelog')}",
342 342 containerCssClass: "drop-menu",
343 343 dropdownCssClass: "drop-menu-dropdown",
344 344 query: function(query){
345 345 var key = 'cache';
346 346 var cached = cache[key] ;
347 347 if(cached) {
348 348 var data = {results: []};
349 349 //filter results
350 350 $.each(cached.results, function(){
351 351 var section = this.text;
352 352 var children = [];
353 353 $.each(this.children, function(){
354 354 if(query.term.length == 0 || this.text.toUpperCase().indexOf(query.term.toUpperCase()) >= 0 ){
355 355 children.push({'id': this.id, 'text': this.text, 'type': this.type})
356 356 }
357 357 });
358 358 data.results.push({'text': section, 'children': children});
359 359 query.callback({results: data.results});
360 360 });
361 361 }else{
362 362 $.ajax({
363 363 url: pyroutes.url('repo_refs_changelog_data', {'repo_name': '${c.repo_name}'}),
364 364 data: {},
365 365 dataType: 'json',
366 366 type: 'GET',
367 367 success: function(data) {
368 368 cache[key] = data;
369 369 query.callback({results: data.results});
370 370 }
371 371 })
372 372 }
373 373 }
374 374 });
375 375
376 376 $('#branch_filter').on('change', function(e){
377 377 var data = $('#branch_filter').select2('data');
378 378 var selected = data.text;
379 379 var filter = {'repo_name': '${c.repo_name}'};
380 380 if(data.type == 'branch' || data.type == 'branch_closed'){
381 381 filter["branch"] = selected;
382 382 }
383 383 else if (data.type == 'book'){
384 384 filter["bookmark"] = selected;
385 385 }
386 386 window.location = pyroutes.url('changelog_home', filter);
387 387 });
388 388
389 389 // Determine max number of edges per row in graph
390 390 var jsdata = $.parseJSON($("[data-graph]").attr('data-graph'));
391 391 var edgeCount = 1;
392 392 $.each(jsdata, function(i, item){
393 393 $.each(item[2], function(key, value) {
394 394 if (value[1] > edgeCount){
395 395 edgeCount = value[1];
396 396 }
397 397 });
398 398 });
399 399 var x_step = Math.min(18, Math.floor(86 / edgeCount));
400 400 var graph_options = {
401 401 width: 100,
402 402 height: $("#changesets").height(),
403 403 x_step: x_step,
404 404 y_step: 42,
405 405 dotRadius: 3.5,
406 406 lineWidth: 2.5
407 407 };
408 408 $("[data-graph]").commits(graph_options);
409 409
410 410 });
411 411
412 412 </script>
413 413 %else:
414 414 ${_('There are no changes yet')}
415 415 %endif
416 416 </div>
417 417 </div>
418 418 </%def>
@@ -1,136 +1,136 b''
1 1 ## -*- coding: utf-8 -*-
2 2 <%namespace name="base" file="/base/base.html"/>
3 3 %if c.repo_commits:
4 4 <table class="rctable repo_summary table_disp">
5 5 <tr>
6 6
7 7 <th class="status" colspan="2"></th>
8 8 <th>${_('Commit')}</th>
9 9 <th>${_('Commit message')}</th>
10 10 <th>${_('Age')}</th>
11 11 <th>${_('Author')}</th>
12 12 <th>${_('Refs')}</th>
13 13 </tr>
14 14 %for cnt,cs in enumerate(c.repo_commits):
15 15 <tr class="parity${cnt%2}">
16 16
17 17 <td class="td-status">
18 18 %if c.statuses.get(cs.raw_id):
19 19 <div class="changeset-status-ico shortlog">
20 20 %if c.statuses.get(cs.raw_id)[2]:
21 21 <a class="tooltip" title="${_('Commit status: %s\nClick to open associated pull request #%s') % (c.statuses.get(cs.raw_id)[0], c.statuses.get(cs.raw_id)[2])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
22 22 <div class="${'flag_status %s' % c.statuses.get(cs.raw_id)[0]}"></div>
23 23 </a>
24 24 %else:
25 25 <a class="tooltip" title="${_('Commit status: %s') % h.commit_status_lbl(c.statuses.get(cs.raw_id)[0])}" href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
26 26 <div class="${'flag_status %s' % c.statuses.get(cs.raw_id)[0]}"></div>
27 27 </a>
28 28 %endif
29 29 </div>
30 30 %else:
31 31 <div class="tooltip flag_status not_reviewed" title="${_('Commit status: Not Reviewed')}"></div>
32 32 %endif
33 33 </td>
34 34 <td class="td-comments">
35 35 %if c.comments.get(cs.raw_id,[]):
36 36 <a title="${_('Commit has comments')}" href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id,anchor='comment-%s' % c.comments[cs.raw_id][0].comment_id)}">
37 37 <i class="icon-comment icon-comment-colored"></i> ${len(c.comments[cs.raw_id])}
38 38 </a>
39 39 %endif
40 40 </td>
41 41 <td class="td-commit">
42 42 <pre><a href="${h.url('changeset_home', repo_name=c.repo_name, revision=cs.raw_id)}">${h.show_id(cs)}</a></pre>
43 43 </td>
44 44
45 45 <td class="td-description mid">
46 46 <div class="log-container truncate-wrap">
47 47 <div class="message truncate" id="c-${cs.raw_id}">${h.urlify_commit_message(cs.message, c.repo_name)}</div>
48 48 </div>
49 49 </td>
50 50
51 51 <td class="td-time">
52 52 ${h.age_component(cs.date)}
53 53 </td>
54 54 <td class="td-user author">
55 55 ${base.gravatar_with_user(cs.author)}
56 56 </td>
57 57
58 <td class="td-tags truncate-wrap">
59 <div class="truncate tags-truncate"><div class="autoexpand">
58 <td class="td-tags">
59 <div class="autoexpand">
60 60 %if h.is_hg(c.rhodecode_repo):
61 61 %for book in cs.bookmarks:
62 62 <span class="booktag tag" title="${_('Bookmark %s') % book}">
63 63 <a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}"><i class="icon-bookmark"></i>${h.shorter(book)}</a>
64 64 </span>
65 65 %endfor
66 66 %endif
67 67 ## tags
68 68 %for tag in cs.tags:
69 69 <span class="tagtag tag" title="${_('Tag %s') % tag}">
70 70 <a href="${h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id)}"><i class="icon-tag"></i>${h.shorter(tag)}</a>
71 71 </span>
72 72 %endfor
73 73
74 74 ## branch
75 75 %if cs.branch:
76 76 <span class="branchtag tag" title="${_('Branch %s') % cs.branch}">
77 77 <a href="${h.url('changelog_home',repo_name=c.repo_name,branch=cs.branch)}"><i class="icon-code-fork"></i>${h.shorter(cs.branch)}</a>
78 78 </span>
79 79 %endif
80 80 </div>
81 81 </td>
82 82 </tr>
83 83 %endfor
84 84
85 85 </table>
86 86
87 87 <script type="text/javascript">
88 88 $(document).pjax('#shortlog_data .pager_link','#shortlog_data', {timeout: 2000, scrollTo: false });
89 89 $(document).on('pjax:success', function(){ timeagoActivate(); });
90 90 </script>
91 91
92 92 <div class="pagination-wh pagination-left">
93 93 ${c.repo_commits.pager('$link_previous ~2~ $link_next')}
94 94 </div>
95 95 %else:
96 96
97 97 %if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
98 98 <div class="quick_start">
99 99 <div class="fieldset">
100 100 <div class="left-label">${_('Add or upload files directly via RhodeCode:')}</div>
101 101 <div class="right-content">
102 102 <div id="add_node_id" class="add_node">
103 103 <a href="${h.url('files_add_home',repo_name=c.repo_name,revision=0,f_path='', anchor='edit')}" class="btn btn-default">${_('Add New File')}</a>
104 104 </div>
105 105 </div>
106 106 %endif
107 107 </div>
108 108
109 109 %if not h.is_svn(c.rhodecode_repo):
110 110 <div class="fieldset">
111 111 <div class="left-label">${_('Push new repo:')}</div>
112 112 <div class="right-content">
113 113 <pre>
114 114 ${c.rhodecode_repo.alias} clone ${c.clone_repo_url}
115 115 ${c.rhodecode_repo.alias} add README # add first file
116 116 ${c.rhodecode_repo.alias} commit -m "Initial" # commit with message
117 117 ${c.rhodecode_repo.alias} push ${'origin master' if h.is_git(c.rhodecode_repo) else ''} # push changes back
118 118 </pre>
119 119 </div>
120 120 </div>
121 121 <div class="fieldset">
122 122 <div class="left-label">${_('Existing repository?')}</div>
123 123 <div class="right-content">
124 124 <pre>
125 125 %if h.is_git(c.rhodecode_repo):
126 126 git remote add origin ${c.clone_repo_url}
127 127 git push -u origin master
128 128 %else:
129 129 hg push ${c.clone_repo_url}
130 130 %endif
131 131 </pre>
132 132 </div>
133 133 </div>
134 134 %endif
135 135 </div>
136 136 %endif
General Comments 0
You need to be logged in to leave comments. Login now