Files
@ 97b8db701355
Branch filter:
Location: kallithea/kallithea/templates/changelog/changelog.html - annotation
97b8db701355
18.2 KiB
text/html
templates: replace invalid metatag attributes with data attributes
(We could also use plain classes ... but stick to the plan ...)
(We could also use plain classes ... but stick to the plan ...)
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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e 37354e1ab283 d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e 37354e1ab283 d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e 432e86d1e555 432e86d1e555 432e86d1e555 d1addaf7a91e d1addaf7a91e d1addaf7a91e ec39e73be935 d1addaf7a91e ec39e73be935 d1addaf7a91e d1addaf7a91e 432e86d1e555 80a15e10857a d1addaf7a91e 33ca6d0f7058 d1addaf7a91e d1addaf7a91e d1addaf7a91e 68d3315c48d4 42bc65838fd1 144878118c95 d1addaf7a91e 2ddd4fb23b4e acfe79f23961 68d3315c48d4 a79e651306e2 68d3315c48d4 68d3315c48d4 68d3315c48d4 68d3315c48d4 68d3315c48d4 68d3315c48d4 2ddd4fb23b4e 2ddd4fb23b4e b7654d1675da 432e86d1e555 b7654d1675da 432e86d1e555 432e86d1e555 432e86d1e555 9581233e9275 d1addaf7a91e 9581233e9275 c2e3923eebe4 b7654d1675da d1addaf7a91e 27f498ee6db0 b7654d1675da 0111c18298a0 2ddd4fb23b4e d1addaf7a91e d1addaf7a91e 2ea889757ba1 0111c18298a0 2ea889757ba1 d1addaf7a91e b8734b428786 d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e 8c5d1e94f9ee d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e c40e567e4b82 40f65bfc04d0 d1addaf7a91e d1addaf7a91e c40e567e4b82 b1bec568c0a2 40f65bfc04d0 d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e 83087ae63bd6 c40e567e4b82 d1addaf7a91e d1addaf7a91e 12919ffab34c d1addaf7a91e d1addaf7a91e c40e567e4b82 d1addaf7a91e d1addaf7a91e 27c7922c745d d1addaf7a91e d1addaf7a91e d1addaf7a91e c3892e3a6ba3 d1addaf7a91e d1addaf7a91e d1addaf7a91e c40e567e4b82 b3299a079fa6 d1addaf7a91e f9f0922a3158 d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 d4b39ef6cadf 9dfabbf93361 7ea933acdb8b d4b39ef6cadf 7ea933acdb8b d4b39ef6cadf 7ea933acdb8b 06e49be38d78 d1addaf7a91e d4b39ef6cadf ce7c4addc2ae d4b39ef6cadf d1addaf7a91e d1addaf7a91e d1addaf7a91e d4b39ef6cadf ce7c4addc2ae d4b39ef6cadf d1addaf7a91e d1addaf7a91e d4b39ef6cadf ce7c4addc2ae d4b39ef6cadf d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e 07bfe091845e 07bfe091845e 2ea889757ba1 2ea889757ba1 103f07acad83 103f07acad83 103f07acad83 d1addaf7a91e d1addaf7a91e d1addaf7a91e dba66b0768f4 d1addaf7a91e e271a8766951 081c47cfad7b 081c47cfad7b d1addaf7a91e d1addaf7a91e 081c47cfad7b 081c47cfad7b 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 322e17eb356a 07bfe091845e 07bfe091845e 93b512845dab 07bfe091845e 93b512845dab 322e17eb356a 322e17eb356a 322e17eb356a 322e17eb356a 93b512845dab 322e17eb356a 322e17eb356a 322e17eb356a 322e17eb356a 322e17eb356a 93b512845dab 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 93b512845dab d1addaf7a91e 081c47cfad7b 081c47cfad7b 07bfe091845e a4b814804263 a4b814804263 a4b814804263 a4b814804263 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e a4b814804263 07bfe091845e 07bfe091845e a4b814804263 a4b814804263 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 07bfe091845e 081c47cfad7b 07bfe091845e 081c47cfad7b 27f498ee6db0 081c47cfad7b 081c47cfad7b 081c47cfad7b 07bfe091845e d1addaf7a91e 081c47cfad7b 081c47cfad7b 081c47cfad7b 322e17eb356a d1addaf7a91e 081c47cfad7b a4b814804263 d1addaf7a91e d1addaf7a91e e271a8766951 07bfe091845e 07bfe091845e 48a96c4059df 07bfe091845e 07bfe091845e d1addaf7a91e 081c47cfad7b 081c47cfad7b d1addaf7a91e 48a96c4059df d1addaf7a91e d1addaf7a91e ee2993beec85 d1addaf7a91e ee2993beec85 d1addaf7a91e ee2993beec85 ee2993beec85 d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e ee2993beec85 ee2993beec85 ee2993beec85 ee2993beec85 d1addaf7a91e d1addaf7a91e d1addaf7a91e f22d103ba9e8 d1addaf7a91e 42bc65838fd1 48a96c4059df d1addaf7a91e d1addaf7a91e d1addaf7a91e 0111c18298a0 0111c18298a0 190cb30841de 4f4d2e899a02 0111c18298a0 0111c18298a0 0111c18298a0 d1addaf7a91e d1addaf7a91e d1addaf7a91e 0111c18298a0 d1addaf7a91e d1addaf7a91e d1addaf7a91e 0111c18298a0 d1addaf7a91e d1addaf7a91e d1addaf7a91e dba66b0768f4 48a96c4059df d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e d1addaf7a91e | ## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>
<%block name="title">
${_('%s Changelog') % c.repo_name}
%if c.changelog_for_path:
/${c.changelog_for_path}
%endif
</%block>
<%def name="breadcrumbs_links()">
<% size = c.size if c.size <= c.total_cs else c.total_cs %>
${_('Changelog')}
%if c.changelog_for_path:
- /${c.changelog_for_path}
%endif
%if c.revision:
@ ${h.short_id(c.first_revision.raw_id)}
%endif
- ${ungettext('showing %d out of %d revision', 'showing %d out of %d revisions', size) % (size, c.total_cs)}
</%def>
<%block name="header_menu">
${self.menu('repositories')}
</%block>
<%def name="main()">
${self.repo_context_bar('changelog', c.first_revision.raw_id if c.first_revision else None)}
<div class="panel panel-primary">
<!-- box / title -->
<div class="panel-heading clearfix">
${self.breadcrumbs()}
</div>
<div class="table">
%if c.pagination:
<div>
<div style="overflow:auto; ${'display:none' if c.changelog_for_path else ''}">
<div class="container_header">
<div style="float:left; margin-left:20px;">
${h.form(h.url.current(),method='get',class_="form-inline")}
${h.submit('set',_('Show'),class_="btn btn-default btn-sm")}
${h.text('size',size=3,value=c.size,class_='form-control')}
${_('revisions')}
%if c.branch_name:
${h.hidden('branch', c.branch_name)}
%endif
${h.end_form()}
<a href="#" class="btn btn-default btn-sm" id="rev_range_clear" style="display:none">${_('Clear selection')}</a>
</div>
<div style="float: right; margin: 0px 0px 0px 4px">
<a href="#" class="btn btn-default btn-sm" id="rev_range_container" style="display:none"></a>
%if c.revision:
<a class="btn btn-default btn-sm" href="${h.url('changelog_home', repo_name=c.repo_name)}">
${_('Go to tip of repository')}
</a>
%endif
%if c.db_repo.fork:
<a id="compare_fork"
title="${_('Compare fork with %s' % c.db_repo.fork.repo_name)}"
href="${h.url('compare_url',repo_name=c.db_repo.fork.repo_name,org_ref_type=c.db_repo.landing_rev[0],org_ref_name=c.db_repo.landing_rev[1],other_repo=c.repo_name,other_ref_type='branch' if request.GET.get('branch') else c.db_repo.landing_rev[0],other_ref_name=request.GET.get('branch') or c.db_repo.landing_rev[1], merge=1)}"
class="btn btn-default btn-sm"><i class="icon-git-compare"></i> ${_('Compare fork with parent repository (%s)' % c.db_repo.fork.repo_name)}</a>
%endif
## text and href of open_new_pr is controlled from javascript
<a id="open_new_pr" class="btn btn-default btn-sm"></a>
${_("Branch filter:")} ${h.select('branch_filter',c.branch_name,c.branch_filters)}
</div>
</div>
</div>
<div id="changelog" style="clear:both">
<div id="graph_nodes">
<canvas id="graph_canvas" style="width:0"></canvas>
</div>
<div id="graph_content" style="${'margin: 0px' if c.changelog_for_path else ''}">
<table id="changesets">
<tbody>
%for cnt,cs in enumerate(c.pagination):
<tr id="chg_${cnt+1}" class="container ${'mergerow' if len(cs.parents) > 1 else ''}">
<td class="checkbox">
%if c.changelog_for_path:
${h.checkbox(cs.raw_id,class_="changeset_range", disabled="disabled")}
%else:
${h.checkbox(cs.raw_id,class_="changeset_range")}
%endif
<td class="status">
%if c.statuses.get(cs.raw_id):
<div class="changeset-status-ico">
%if c.statuses.get(cs.raw_id)[2]:
<a data-toggle="tooltip" title="${_('Changeset status: %s by %s\nClick to open associated pull request %s') % (c.statuses.get(cs.raw_id)[1], c.statuses.get(cs.raw_id)[5].username, c.statuses.get(cs.raw_id)[4])}" href="${h.url('pullrequest_show',repo_name=c.statuses.get(cs.raw_id)[3],pull_request_id=c.statuses.get(cs.raw_id)[2])}">
<i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
</a>
%else:
<a data-toggle="tooltip" title="${_('Changeset status: %s by %s') % (c.statuses.get(cs.raw_id)[1], c.statuses.get(cs.raw_id)[5].username)}"
href="${c.comments[cs.raw_id][0].url()}">
<i class="icon-circle changeset-status-${c.statuses.get(cs.raw_id)[0]}"></i>
</a>
%endif
</div>
%endif
</td>
<td class="author">
${h.gravatar(h.email_or_none(cs.author), size=16)}
<span data-toggle="tooltip" title="${cs.author}" class="user">${h.shorter(h.person(cs.author),22)}</span>
</td>
<td class="hash" style="width:${len(h.show_id(cs))*6.5}px">
${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id), class_='changeset_hash')}
</td>
<td class="date">
<div class="date" data-toggle="tooltip" title="${h.fmt_date(cs.date)}">${h.age(cs.date,True)}</div>
</td>
<td class="expand_commit" commit_id="${cs.raw_id}" title="${_('Expand commit message')}">
<i class="icon-align-left" style="color:#999"></i>
</td>
<td class="mid">
<div class="log-container">
<div class="message" id="C-${cs.raw_id}">${h.urlify_text(cs.message, c.repo_name,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div>
<div class="extra-container">
%if c.comments.get(cs.raw_id):
<div class="comments-container">
<div class="comments-cnt" data-toggle="tooltip" title="${_('Changeset has comments')}">
<a href="${c.comments[cs.raw_id][0].url()}">
${len(c.comments[cs.raw_id])}
<i class="icon-comment-discussion"></i>
</a>
</div>
</div>
%endif
%if cs.bumped:
<span class="bumpedtag" title="Bumped">
Bumped
</span>
%endif
%if cs.divergent:
<span class="divergenttag" title="Divergent">
Divergent
</span>
%endif
%if cs.extinct:
<span class="extincttag" title="Extinct">
Extinct
</span>
%endif
%if cs.unstable:
<span class="unstabletag" title="Unstable">
Unstable
</span>
%endif
%if cs.phase:
<span class="phasetag" title="Phase">
${cs.phase}
</span>
%endif
%if h.is_hg(c.db_repo_scm_instance):
%for book in cs.bookmarks:
<span class="booktag" title="${_('Bookmark %s') % book}">
${h.link_to(book,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
</span>
%endfor
%endif
%for tag in cs.tags:
<span class="tagtag" title="${_('Tag %s') % tag}">
${h.link_to(tag,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
</span>
%endfor
%if (not c.branch_name) and cs.branch:
<span class="branchtag" title="${_('Branch %s' % cs.branch)}">
${h.link_to(cs.branch,h.url('changelog_home',repo_name=c.repo_name,branch=cs.branch))}
</span>
%endif
</div>
</div>
</td>
</tr>
%endfor
</tbody>
</table>
<input type="checkbox" id="singlerange" style="display:none"/>
</div>
<ul class="pagination">
${c.pagination.pager()}
</ul>
</div>
</div>
<script type="text/javascript" src="${h.url('/js/graph.js', ver=c.kallithea_version)}"></script>
<script type="text/javascript">
$(document).ready(function(){
var $checkboxes = $('.changeset_range');
pyroutes.register('changeset_home', "${h.url('changeset_home', repo_name='%(repo_name)s', revision='%(revision)s')}", ['repo_name', 'revision']);
var checkbox_checker = function(e) {
var $checked_checkboxes = $checkboxes.filter(':checked');
var $singlerange = $('#singlerange');
$('#rev_range_container').hide();
$checkboxes.show();
$singlerange.show();
if ($checked_checkboxes.length > 0) {
$checked_checkboxes.first().parent('td').append($singlerange);
var singlerange = $singlerange.prop('checked');
var rev_end = $checked_checkboxes.first().prop('name');
if ($checked_checkboxes.length > 1 || singlerange) {
var rev_start = $checked_checkboxes.last().prop('name');
$('#rev_range_container').prop('href',
pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}',
'revision': rev_start + '...' + rev_end}));
$('#rev_range_container').html(
_TM['Show Selected Changesets {0} → {1}'].format(rev_start.substr(0, 12), rev_end.substr(0, 12)));
$('#rev_range_container').show();
$('#open_new_pr').prop('href', pyroutes.url('pullrequest_home',
{'repo_name': '${c.repo_name}',
'rev_start': rev_start,
'rev_end': rev_end}));
$('#open_new_pr').html(_TM['Open New Pull Request for {0} → {1}'].format(rev_start.substr(0, 12), rev_end.substr(0, 12)));
} else {
$('#open_new_pr').prop('href', pyroutes.url('pullrequest_home',
{'repo_name': '${c.repo_name}',
'rev_end': rev_end}));
$('#open_new_pr').html(_TM['Open New Pull Request from {0}'].format(rev_end.substr(0, 12)));
}
$('#rev_range_clear').show();
$('#compare_fork').hide();
var disabled = true;
$checkboxes.each(function(){
var $this = $(this);
if (disabled) {
if ($this.prop('checked')) {
$this.closest('tr').removeClass('out-of-range');
disabled = singlerange;
} else {
$this.closest('tr').addClass('out-of-range');
}
} else {
$this.closest('tr').removeClass('out-of-range');
disabled = $this.prop('checked');
}
});
if ($checked_checkboxes.length + (singlerange ? 1 : 0) >= 2) {
$checkboxes.hide();
$checked_checkboxes.show();
if (!singlerange)
$singlerange.hide();
}
} else {
$('#singlerange').hide().prop('checked', false);
$('#rev_range_clear').hide();
%if c.revision:
$('#open_new_pr').prop('href', pyroutes.url('pullrequest_home',
{'repo_name': '${c.repo_name}',
'rev_end':'${c.first_revision.raw_id}'}));
$('#open_new_pr').html(_TM['Open New Pull Request from {0}'].format('${c.revision}'));
%else:
$('#open_new_pr').prop('href', pyroutes.url('pullrequest_home',
{'repo_name': '${c.repo_name}',
'branch':'${c.first_revision.branch}'}));
$('#open_new_pr').html(_TM['Open New Pull Request from {0}'].format('${c.first_revision.branch}'));
%endif
$('#compare_fork').show();
$checkboxes.closest('tr').removeClass('out-of-range');
}
};
checkbox_checker();
$checkboxes.click(function() {
checkbox_checker();
r.render(jsdata);
});
$('#singlerange').click(checkbox_checker);
$('#rev_range_clear').click(function(e){
$checkboxes.prop('checked', false);
checkbox_checker();
r.render(jsdata);
});
var $msgs = $('.message');
// get first element height
var el = $('#graph_content .container')[0];
var row_h = el.clientHeight;
$msgs.each(function() {
var m = this;
var h = m.clientHeight;
if(h > row_h){
var offset = row_h - (h+12);
$(m.nextElementSibling).css('display', 'block');
$(m.nextElementSibling).css('margin-top', offset+'px');
}
});
$('.expand_commit').on('click',function(e){
var cid = $(this).attr('commit_id');
$('#C-'+cid).toggleClass('expanded');
//redraw the graph, r and jsdata are bound outside function
r.render(jsdata);
});
// change branch filter
$("#branch_filter").select2({
dropdownAutoWidth: true,
maxResults: 50,
sortResults: branchSort
});
$("#branch_filter").change(function(e){
var selected_branch = e.currentTarget.options[e.currentTarget.selectedIndex].value;
if(selected_branch != ''){
window.location = pyroutes.url('changelog_home', {'repo_name': '${c.repo_name}',
'branch': selected_branch});
}else{
window.location = pyroutes.url('changelog_home', {'repo_name': '${c.repo_name}'});
}
$("#changelog").hide();
});
var jsdata = ${c.jsdata|n};
var r = new BranchRenderer('graph_canvas', 'graph_content', 'chg_');
r.render(jsdata);
});
</script>
%else:
${_('There are no changes yet')}
%endif
</div>
</div>
</%def>
|