Files @ ad49bbd8f984
Branch filter:

Location: kallithea/rhodecode/templates/changelog/changelog.html - annotation

Bradley M. Kuhn
changelog - should refer to Mercurial repository logs instead
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
1e757ac98988
1e757ac98988
1e757ac98988
f6d57d055d1e
087b50ef7e17
087b50ef7e17
087b50ef7e17
087b50ef7e17
087b50ef7e17
1e757ac98988
1e757ac98988
1e757ac98988
eacd33e0c5b3
1e757ac98988
1e757ac98988
1e757ac98988
072a37c44f58
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
b4f401524060
b4f401524060
30a683d04e77
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
9937afa7f093
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
6302a1423a4e
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ffd45b185016
f91d3f9b7230
ed48d17836a4
ed48d17836a4
b4f401524060
ed48d17836a4
ed48d17836a4
6302a1423a4e
6302a1423a4e
6302a1423a4e
6302a1423a4e
6302a1423a4e
6c505fe11f0f
6c505fe11f0f
6c505fe11f0f
6c505fe11f0f
c7e656e96c5d
6c505fe11f0f
6c505fe11f0f
6c505fe11f0f
c7e656e96c5d
458fd829aa20
458fd829aa20
6c505fe11f0f
6c505fe11f0f
6c505fe11f0f
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
acc264c649d6
9bf927589f7a
58dcef7eef03
9bf927589f7a
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ffd45b185016
ffd45b185016
ffd45b185016
ed48d17836a4
7f8d349bbde4
ffd45b185016
7f8d349bbde4
5a8918aba869
0614862a20ec
458fd829aa20
9bf927589f7a
9bf927589f7a
ffd45b185016
9bf927589f7a
350d95dece6f
0614862a20ec
7f8d349bbde4
8fae93880c30
c0a157ab9a15
93de03499097
c0a157ab9a15
c0a157ab9a15
c0a157ab9a15
8fae93880c30
7f8d349bbde4
ec6354949623
7f8d349bbde4
b4f401524060
b4f401524060
9bf927589f7a
ec6354949623
9bf927589f7a
7f8d349bbde4
b4f401524060
ed48d17836a4
7f8d349bbde4
ed48d17836a4
ed48d17836a4
b4f401524060
ed48d17836a4
ed48d17836a4
f91d3f9b7230
b4f401524060
b4f401524060
b4f401524060
b4f401524060
ed48d17836a4
f91d3f9b7230
ed48d17836a4
ed48d17836a4
ed48d17836a4
f91d3f9b7230
ed48d17836a4
ed48d17836a4
ed48d17836a4
04242759b61e
04242759b61e
d253f1b530c8
7967d00e4692
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
28524453bb76
ed48d17836a4
ed48d17836a4
7967d00e4692
7967d00e4692
7967d00e4692
7967d00e4692
b19b1723ff10
7967d00e4692
b19b1723ff10
7967d00e4692
b19b1723ff10
58bb350bfef8
7967d00e4692
9937afa7f093
ed48d17836a4
ed48d17836a4
ed48d17836a4
04242759b61e
04242759b61e
f91d3f9b7230
ed48d17836a4
549c73bfc206
549c73bfc206
e74557f57f76
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
9937afa7f093
04242759b61e
04242759b61e
04242759b61e
04242759b61e
04242759b61e
7967d00e4692
7967d00e4692
ed48d17836a4
ed48d17836a4
dca89d578c70
04242759b61e
04242759b61e
04242759b61e
dca89d578c70
04242759b61e
04242759b61e
dca89d578c70
7967d00e4692
7967d00e4692
7967d00e4692
7967d00e4692
7967d00e4692
d253f1b530c8
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
7967d00e4692
ed48d17836a4
ed48d17836a4
f91d3f9b7230
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
f91d3f9b7230
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
b4f401524060
ed48d17836a4
f91d3f9b7230
ffd45b185016
ffd45b185016
ffd45b185016
ffd45b185016
ed48d17836a4
b4f401524060
f91d3f9b7230
b4f401524060
b4f401524060
b4f401524060
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
04242759b61e
c1a1f05e680f
ed48d17836a4
04242759b61e
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ed48d17836a4
ffd45b185016
ed48d17836a4
b4f401524060
b4f401524060
b4f401524060
1e757ac98988
f91d3f9b7230
37b3c3244bbc
## -*- coding: utf-8 -*-

<%inherit file="/base/base.html"/>

<%def name="title()">
    ${_('%s Changelog') % c.repo_name}
    %if c.changelog_for_path:
      /${c.changelog_for_path}
    %endif
    %if c.rhodecode_name:
        &middot; ${c.rhodecode_name}
    %endif
</%def>

<%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
    - ${ungettext('showing %d out of %d revision', 'showing %d out of %d revisions', size) % (size, c.total_cs)}
</%def>

<%def name="page_nav()">
    ${self.menu('repositories')}
</%def>

<%def name="main()">
${self.repo_context_bar('changelog')}
<div class="box">
    <!-- box / title -->
    <div class="title">
        ${self.breadcrumbs()}
    </div>
    <div class="table">
        % if c.pagination:
            <div id="graph">
                <div style="overflow:auto; display:${'none' if c.changelog_for_path else ''}">
                    <div class="container_header">
                       <div style="float:right; margin: 0px 0px 0px 4px">${h.select('branch_filter',c.branch_name,c.branch_filters)}</div>
                       <div class="info_box" style="text-align: right; float: right">
                            <a href="#" class="btn btn-mini" id="rev_range_container" style="display:none"></a>
                            <a href="#" class="btn btn-mini" id="rev_range_clear" style="display:none">${_('Clear selection')}</a>

                            %if c.rhodecode_db_repo.fork:
                                <a id="compare_fork"
                                   title="${_('Compare fork with %s' % c.rhodecode_db_repo.fork.repo_name)}"
                                   href="${h.url('compare_url',repo_name=c.rhodecode_db_repo.fork.repo_name,org_ref_type=c.rhodecode_db_repo.landing_rev[0],org_ref=c.rhodecode_db_repo.landing_rev[1],other_repo=c.repo_name,other_ref_type='branch' if request.GET.get('branch') else c.rhodecode_db_repo.landing_rev[0],other_ref=request.GET.get('branch') or c.rhodecode_db_repo.landing_rev[1], merge=1)}"
                                   class="btn btn-mini"><i class="icon-loop"></i> ${_('Compare fork with Parent(%s)' % c.rhodecode_db_repo.fork.repo_name)}</a>
                            %endif
                            <a id="open_new_pr" href="${h.url('pullrequest_home',repo_name=c.repo_name)}" class="btn btn-mini">${_('Open new pull request')}</a>
                       </div>

                       ${h.form(h.url.current(),method='get')}
                       <div style="float:left">
                           ${h.submit('set',_('Show'),class_="btn btn-mini")}
                           ${h.text('size',size=1,value=c.size)}
                           ${_('revisions')}
                       </div>
                       ${h.end_form()}
                    </div>
                </div>
                <div id="graph_nodes">
                    <canvas id="graph_canvas"></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 ${'tablerow%s' % (cnt%2)}">
                        <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 class="tooltip" title="${_('Changeset status: %s\nClick to open associated pull request #%s') % (h.changeset_status_lbl(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])}">
                                <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
                              </a>
                            %else:
                              <a class="tooltip" title="${_('Changeset status: %s') % h.changeset_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)}">
                                  <img src="${h.url('/images/icons/flag_status_%s.png' % c.statuses.get(cs.raw_id)[0])}" />
                              </a>
                            %endif
                            </div>
                          %endif
                        </td>
                        <td class="author">
                            <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(cs.author),16)}"/>
                            <span 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">
                            <a href="${h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id)}">
                                <span class="changeset_hash">${h.show_id(cs)}</span>
                            </a>
                        </td>
                        <td class="date">
                            <div class="date">${h.age(cs.date,True)}</div>
                        </td>
                        <td class="expand_commit" commit_id="${cs.raw_id}" title="${_('Expand commit message')}">
                            <i class="icon-resize-vertical" style="color:#DDD"></i>
                        </td>
                        <td class="mid">
                            <div class="log-container">
                                <div class="message" id="C-${cs.raw_id}">${h.urlify_commit(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" title="${_('Changeset has comments')}">
                                                <a 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)}">
                                                    ${len(c.comments[cs.raw_id])}
                                                    <i class="icon-comment-alt icon-comment-colored"></i>
                                                </a>
                                            </div>
                                        </div>
                                    %endif
                                    %if h.is_hg(c.rhodecode_repo):
                                        %for book in cs.bookmarks:
                                            <div class="booktag" title="${_('Bookmark %s') % book}">
                                                ${h.link_to(h.shorter(book),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
                                            </div>
                                        %endfor
                                    %endif
                                    %for tag in cs.tags:
                                        <div class="tagtag" title="${_('Tag %s') % tag}">
                                            ${h.link_to(h.shorter(tag),h.url('files_home',repo_name=c.repo_name,revision=cs.raw_id))}
                                        </div>
                                    %endfor
                                    %if (not c.branch_name) and cs.branch:
                                        <div class="branchtag" title="${_('Branch %s' % cs.branch)}">
                                            ${h.link_to(h.shorter(cs.branch),h.url('changelog_home',repo_name=c.repo_name,branch=cs.branch))}
                                        </div>
                                    %endif
                                </div>
                            </div>
                        </td>
                    </tr>
                %endfor
                </tbody>
                </table>

                <div class="pagination-wh pagination-left">
                    ${c.pagination.pager('$link_previous ~2~ $link_next')}
                </div>
            </div>
        </div>

        <script type="text/javascript" src="${h.url('/js/graph.js')}"></script>
        <script type="text/javascript">
            YAHOO.util.Event.onDOMReady(function(){

                //Monitor range checkboxes and build a link to changesets
                //ranges
                var checkboxes = YUD.getElementsByClassName('changeset_range');
                // register our routes needed for this view
                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 = [];
                    for (pos in checkboxes){
                        if(checkboxes[pos].checked){
                            checked_checkboxes.push(checkboxes[pos]);
                        }
                    }
                    if(YUD.get('open_new_pr')){
                        if(checked_checkboxes.length>1){
                            YUD.setStyle('open_new_pr','display','none');
                        } else {
                            YUD.setStyle('open_new_pr','display','');
                            if(checked_checkboxes.length>0){
                                YUD.get('open_new_pr').innerHTML = _TM['Open new pull request for selected changesets'];
                            }else{
                                YUD.get('open_new_pr').innerHTML = _TM['Open new pull request'];
                            }
                        }
                    }

                    if(checked_checkboxes.length>0){
                        var rev_end = checked_checkboxes[0].name;
                        var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
                        var url = pyroutes.url('changeset_home', {'repo_name': '${c.repo_name}',
                                                                  'revision': rev_start+'...'+rev_end});

                        var link = (rev_start == rev_end)
                            ? _TM['Show selected changeset __S']
                            : _TM['Show selected changesets __S -> __E'];

                        link = link.replace('__S',rev_start.substr(0,6));
                        link = link.replace('__E',rev_end.substr(0,6));
                        YUD.get('rev_range_container').href = url;
                        YUD.get('rev_range_container').innerHTML = link;
                        YUD.setStyle('rev_range_container','display','');
                        YUD.setStyle('rev_range_clear','display','');

                        YUD.get('open_new_pr').href = pyroutes.url('pullrequest_home',
                                                                   {'repo_name': '${c.repo_name}',
                                                                    'rev_start': rev_start,
                                                                    'rev_end': rev_end})

                        YUD.setStyle('compare_fork','display','none');
                    }else{
                        YUD.setStyle('rev_range_container','display','none');
                        YUD.setStyle('rev_range_clear','display','none');
                        %if c.branch_name:
                            YUD.get('open_new_pr').href = pyroutes.url('pullrequest_home',
                                                                       {'repo_name': '${c.repo_name}',
                                                                        'branch':'${c.branch_name}'});
                        %else:
                            YUD.get('open_new_pr').href = pyroutes.url('pullrequest_home',
                                                                       {'repo_name': '${c.repo_name}'});
                        %endif
                        YUD.setStyle('compare_fork','display','');
                    }
                };
                YUE.onDOMReady(checkbox_checker);
                YUE.on(checkboxes,'click', checkbox_checker);

                YUE.on('rev_range_clear','click',function(e){
                    for (var i=0; i<checkboxes.length; i++){
                        var cb = checkboxes[i];
                        cb.checked = false;
                    }
                    checkbox_checker();
                    YUE.preventDefault(e);
                });

                var msgs = YUQ('.message');
                // get first element height
                var el = YUQ('#graph_content .container')[0];
                var row_h = el.clientHeight;
                for(var i=0;i<msgs.length;i++){
                    var m = msgs[i];

                    var h = m.clientHeight;
                    var pad = YUD.getStyle(m,'padding');
                    if(h > row_h){
                        var offset = row_h - (h+12);
                        YUD.setStyle(m.nextElementSibling,'display','block');
                        YUD.setStyle(m.nextElementSibling,'margin-top',offset+'px');
                    };
                }

                $('.expand_commit').on('click',function(e){
                    $(this).children('i').hide();
                    var cid = $(this).attr('commit_id');
                    $('#C-'+cid).css({'height': 'auto', 'margin': '4px 0px 4px 0px'})
                    //redraw the graph, line_count and jsdata are global vars
                    set_canvas(100);

                    var r = new BranchRenderer();
                    r.render(jsdata,100,line_count);
                });

                // change branch filter
                YUE.on(YUD.get('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}'});
                    }
                });

                function set_canvas(width) {
                    var c = document.getElementById('graph_nodes');
                    var t = document.getElementById('graph_content');
                    canvas = document.getElementById('graph_canvas');
                    var div_h = t.clientHeight;
                    canvas.setAttribute('height',div_h);
                    canvas.setAttribute('width',width);
                };
                var heads = 1;
                var line_count = 0;
                var jsdata = ${c.jsdata|n};

                for (var i=0;i<jsdata.length;i++) {
                    var in_l = jsdata[i][2];
                    for (var j in in_l) {
                        var m = in_l[j][1];
                        if (m > line_count)
                            line_count = m;
                    }
                }
                set_canvas(100);

                var r = new BranchRenderer();
                r.render(jsdata,100,line_count);

            });

        </script>
        %else:
            ${_('There are no changes yet')}
        %endif
    </div>
</div>
</%def>