Mercurial > kallithea
changeset 1431:d5d7c40e8591 beta
changelog uses lazy loading of affected files details, in some scenarios this can improve speed
of changelog page dramatically especially for larger repositories.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 16 Jul 2011 19:30:38 +0200 |
parents | 9d19456c4f65 |
children | 54306315e96f |
files | rhodecode/config/routing.py rhodecode/controllers/changelog.py rhodecode/public/css/style.css rhodecode/templates/changelog/changelog.html rhodecode/templates/changelog/changelog_details.html |
diffstat | 5 files changed, 44 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/config/routing.py Sat Jul 16 14:07:11 2011 +0200 +++ b/rhodecode/config/routing.py Sat Jul 16 19:30:38 2011 +0200 @@ -337,6 +337,10 @@ rmap.connect('changelog_home', '/{repo_name:.*}/changelog', controller='changelog', conditions=dict(function=check_repo)) + rmap.connect('changelog_details', '/{repo_name:.*}/changelog_details/{cs}', + controller='changelog', action='changelog_details', + conditions=dict(function=check_repo)) + rmap.connect('files_home', '/{repo_name:.*}/files/{revision}/{f_path:.*}', controller='files', revision='tip', f_path='', conditions=dict(function=check_repo))
--- a/rhodecode/controllers/changelog.py Sat Jul 16 14:07:11 2011 +0200 +++ b/rhodecode/controllers/changelog.py Sat Jul 16 19:30:38 2011 +0200 @@ -76,6 +76,11 @@ return render('changelog/changelog.html') + def changelog_details(self, cs): + if request.environ.get('HTTP_X_PARTIAL_XHR'): + c.cs = c.rhodecode_repo.get_changeset(cs) + return render('changelog/changelog_details.html') + def _graph(self, repo, repo_size, size, p): """ Generates a DAG graph for mercurial
--- a/rhodecode/public/css/style.css Sat Jul 16 14:07:11 2011 +0200 +++ b/rhodecode/public/css/style.css Sat Jul 16 19:30:38 2011 +0200 @@ -1787,6 +1787,16 @@ clear:both; } +.right .changes .changed_total{ +border:1px solid #DDD; +display:block; +float:right; +text-align:center; +min-width:45px; +cursor: pointer; +background:#FD8; +font-weight: bold; +} .right .changes .added,.changed,.removed { border:1px solid #DDD; display:block;
--- a/rhodecode/templates/changelog/changelog.html Sat Jul 16 14:07:11 2011 +0200 +++ b/rhodecode/templates/changelog/changelog.html Sat Jul 16 19:30:38 2011 +0200 @@ -59,20 +59,15 @@ <div class="message">${h.link_to(h.wrap_paragraphs(cs.message),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div> </div> <div class="right"> - <div class="changes"> - % if len(cs.affected_files) <= c.affected_files_cut_off: - <span class="removed tooltip" title="<b>${_('removed')}</b>${h.changed_tooltip(cs.removed)}">${len(cs.removed)}</span> - <span class="changed tooltip" title="<b>${_('changed')}</b>${h.changed_tooltip(cs.changed)}">${len(cs.changed)}</span> - <span class="added tooltip" title="<b>${_('added')}</b>${h.changed_tooltip(cs.added)}">${len(cs.added)}</span> - % else: - <span class="removed tooltip" title="${_('affected %s files') % len(cs.affected_files)}">!</span> - <span class="changed tooltip" title="${_('affected %s files') % len(cs.affected_files)}">!</span> - <span class="added tooltip" title="${_('affected %s files') % len(cs.affected_files)}">!</span> - % endif + <div id="${cs.raw_id}_changes_info" class="changes"> + <span id="${cs.raw_id}" class="changed_total tooltip" + title="${_('Affected number of files, click to show more details')}"> + ${len(cs.affected_files)} + </span> </div> %if len(cs.parents)>1: <div class="merge"> - ${_('merge')}<img alt="merge" src="${h.url("/images/icons/arrow_join.png")}"/> + ${_('merge')}<img alt="merge" src="${h.url('/images/icons/arrow_join.png')}"/> </div> %endif %if cs.parents: @@ -110,7 +105,7 @@ YAHOO.util.Event.onDOMReady(function(){ //Monitor range checkboxes and build a link to changesets - //ranges + //ranges var checkboxes = YUD.getElementsByClassName('changeset_range'); var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}"; YUE.on(checkboxes,'click',function(e){ @@ -139,6 +134,15 @@ } }); + //Fetch changeset details + YUE.on(YUD.getElementsByClassName('changed_total'),'click',function(e){ + var id = e.currentTarget.id + var url = "${h.url('changelog_details',repo_name=c.repo_name,cs='__CS__')}" + var url = url.replace('__CS__',id); + ypjax(url,id+'_changes_info',function(){tooltip_activate()}); + }); + + function set_canvas(heads) { var c = document.getElementById('graph_nodes'); var t = document.getElementById('graph_content');
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/templates/changelog/changelog_details.html Sat Jul 16 19:30:38 2011 +0200 @@ -0,0 +1,9 @@ +% if len(c.cs.affected_files) <= c.affected_files_cut_off: +<span class="removed tooltip" title="<b>${_('removed')}</b>${h.changed_tooltip(c.cs.removed)}">${len(c.cs.removed)}</span> +<span class="changed tooltip" title="<b>${_('changed')}</b>${h.changed_tooltip(c.cs.changed)}">${len(c.cs.changed)}</span> +<span class="added tooltip" title="<b>${_('added')}</b>${h.changed_tooltip(c.cs.added)}">${len(c.cs.added)}</span> +% else: + <span class="removed tooltip" title="${_('affected %s files') % len(c.cs.affected_files)}">!</span> + <span class="changed tooltip" title="${_('affected %s files') % len(c.cs.affected_files)}">!</span> + <span class="added tooltip" title="${_('affected %s files') % len(c.cs.affected_files)}">!</span> +% endif \ No newline at end of file