Mercurial > kallithea
changeset 4786:5d5d8ec14aa7
pullrequests: show graph next to changesets available for update
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Wed, 21 Jan 2015 17:35:11 +0100 |
parents | 6262ca7ed934 |
children | fab4e18432ba |
files | kallithea/controllers/pullrequests.py kallithea/templates/pullrequests/pullrequest_show.html |
diffstat | 2 files changed, 24 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/pullrequests.py Wed Jan 21 17:35:11 2015 +0100 +++ b/kallithea/controllers/pullrequests.py Wed Jan 21 17:35:11 2015 +0100 @@ -552,7 +552,8 @@ revs = [ctx.revision for ctx in reversed(c.cs_ranges)] c.jsdata = json.dumps(graph_data(org_scm_instance, revs)) - arevs = [] + avail_revs = set() + avail_show = [] c.cs_branch_name = c.cs_ref_name other_scm_instance = c.a_repo.scm_instance c.update_msg = "" @@ -574,24 +575,29 @@ elif c.pull_request.is_closed(): c.update_msg = _('This pull request has been closed and can not be updated.') else: # look for descendants of PR head on source branch in org repo - arevs = org_scm_instance._repo.revs('%s:: & branch(%s) - %s', - revs[0], c.cs_branch_name, revs[0]) - if arevs: - arevs = sorted(arevs, reverse=True) + avail_revs = org_scm_instance._repo.revs('%s:: & branch(%s)', + revs[0], c.cs_branch_name) + if len(avail_revs) > 1: # more than just revs[0] + show = set(avail_revs) c.update_msg = _('This pull request can be updated with changes on %s:') % c.cs_branch_name else: + show = set() c.update_msg = _('No changesets found for updating this pull request.') # TODO: handle branch heads that not are tip-most - brevs = org_scm_instance._repo.revs('%s - %d - %ld', c.cs_branch_name, revs[0], arevs) + brevs = org_scm_instance._repo.revs('%s - %ld', c.cs_branch_name, avail_revs) if brevs: c.update_msg_other = _('Note: Branch %s has another head: %s.') % (c.cs_branch_name, h.short_id(org_scm_instance.get_changeset((max(brevs))).raw_id)) + avail_show = sorted(show, reverse=True) + elif org_scm_instance.alias == 'git': c.update_msg = _("Git pull requests don't support updates yet.") - c.available = [org_scm_instance.get_changeset(r) for r in arevs] + c.avail_revs = avail_revs + c.avail_cs = [org_scm_instance.get_changeset(r) for r in avail_show] + c.avail_jsdata = json.dumps(graph_data(org_scm_instance, avail_show)) raw_ids = [x.raw_id for x in c.cs_ranges] c.cs_comments = c.cs_repo.get_comments(raw_ids)
--- a/kallithea/templates/pullrequests/pullrequest_show.html Wed Jan 21 17:35:11 2015 +0100 +++ b/kallithea/templates/pullrequests/pullrequest_show.html Wed Jan 21 17:35:11 2015 +0100 @@ -172,11 +172,14 @@ </div> <div class="input"> <div class="msg-div">${c.update_msg}</div> - %if c.available: + %if c.avail_revs: <div id="updaterevs" style="max-height:200px; overflow-y:auto; overflow-x:hidden; margin-bottom: 10px"> - <table class="noborder"> - %for cnt, cs in enumerate(c.available): - <tr> + <div style="height:0"> + <canvas id="avail_graph_canvas"></canvas> + </div> + <table id="updaterevs-table" class="noborder" style="padding-left:50px"> + %for cnt, cs in enumerate(c.avail_cs): + <tr id="chg_available_${cnt+1}"> %if cs.revision == c.cs_ranges[-1].revision: <td> %if editable: @@ -347,6 +350,10 @@ injectInlineForm(tr.parentNode.parentNode); }); + var avail_jsdata = ${c.avail_jsdata|n}; + var avail_r = new BranchRenderer('avail_graph_canvas', 'updaterevs-table', 'chg_available_'); + avail_r.render(avail_jsdata,40); + // inject comments into they proper positions var file_comments = $('.inline-comment-placeholder').toArray(); renderInlineComments(file_comments);