mercurial/hgweb/webcommands.py
changeset 7345 55651328dfcc
parent 7332 5c95d7667dd1
child 7361 9fe97eea5510
equal deleted inserted replaced
7336:2dc868712dcc 7345:55651328dfcc
     3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
     3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
     4 #
     4 #
     5 # This software may be used and distributed according to the terms
     5 # This software may be used and distributed according to the terms
     6 # of the GNU General Public License, incorporated herein by reference.
     6 # of the GNU General Public License, incorporated herein by reference.
     7 
     7 
     8 import os, mimetypes, re, cgi
     8 import os, mimetypes, re, cgi, copy
     9 import webutil
     9 import webutil
    10 from mercurial import revlog, archival, templatefilters
    10 from mercurial import revlog, archival, templatefilters
    11 from mercurial.node import short, hex, nullid
    11 from mercurial.node import short, hex, nullid
    12 from mercurial.util import binary, datestr
    12 from mercurial.util import binary, datestr
    13 from mercurial.repo import RepoError
    13 from mercurial.repo import RepoError
   617 
   617 
   618 def graph(web, req, tmpl):
   618 def graph(web, req, tmpl):
   619     rev = webutil.changectx(web.repo, req).rev()
   619     rev = webutil.changectx(web.repo, req).rev()
   620     bg_height = 39
   620     bg_height = 39
   621 
   621 
       
   622     revcount = 25
       
   623     if 'revcount' in req.form:
       
   624         revcount = int(req.form.get('revcount', [revcount])[0])
       
   625         tmpl.defaults['sessionvars']['revcount'] = revcount
       
   626 
       
   627     lessvars = copy.copy(tmpl.defaults['sessionvars'])
       
   628     lessvars['revcount'] = revcount / 2
       
   629     morevars = copy.copy(tmpl.defaults['sessionvars'])
       
   630     morevars['revcount'] = revcount * 2
       
   631 
   622     max_rev = len(web.repo) - 1
   632     max_rev = len(web.repo) - 1
   623     revcount = min(max_rev, int(req.form.get('revcount', [25])[0]))
   633     revcount = min(max_rev, revcount)
   624     revnode = web.repo.changelog.node(rev)
   634     revnode = web.repo.changelog.node(rev)
   625     revnode_hex = hex(revnode)
   635     revnode_hex = hex(revnode)
   626     uprev = min(max_rev, rev + revcount)
   636     uprev = min(max_rev, rev + revcount)
   627     downrev = max(0, rev - revcount)
   637     downrev = max(0, rev - revcount)
   628     lessrev = max(0, rev - revcount / 2)
       
   629 
       
   630     count = len(web.repo)
   638     count = len(web.repo)
   631     changenav = webutil.revnavgen(rev, revcount, count, web.repo.changectx)
   639     changenav = webutil.revnavgen(rev, revcount, count, web.repo.changectx)
   632 
   640 
   633     tree = list(graphmod.graph(web.repo, rev, downrev))
   641     tree = list(graphmod.graph(web.repo, rev, downrev))
   634     canvasheight = (len(tree) + 1) * bg_height - 27;
   642     canvasheight = (len(tree) + 1) * bg_height - 27;
   635 
       
   636     data = []
   643     data = []
   637     for i, (ctx, vtx, edges) in enumerate(tree):
   644     for i, (ctx, vtx, edges) in enumerate(tree):
   638         node = short(ctx.node())
   645         node = short(ctx.node())
   639         age = templatefilters.age(ctx.date())
   646         age = templatefilters.age(ctx.date())
   640         desc = templatefilters.firstline(ctx.description())
   647         desc = templatefilters.firstline(ctx.description())
   643         branch = ctx.branch()
   650         branch = ctx.branch()
   644         branch = branch, web.repo.branchtags().get(branch) == ctx.node()
   651         branch = branch, web.repo.branchtags().get(branch) == ctx.node()
   645         data.append((node, vtx, edges, desc, user, age, branch, ctx.tags()))
   652         data.append((node, vtx, edges, desc, user, age, branch, ctx.tags()))
   646 
   653 
   647     return tmpl('graph', rev=rev, revcount=revcount, uprev=uprev,
   654     return tmpl('graph', rev=rev, revcount=revcount, uprev=uprev,
   648                 lessrev=lessrev, revcountmore=revcount and 2 * revcount or 1,
   655                 lessvars=lessvars, morevars=morevars, downrev=downrev,
   649                 revcountless=revcount / 2, downrev=downrev,
   656                 canvasheight=canvasheight, jsdata=data, bg_height=bg_height,
   650                 canvasheight=canvasheight, bg_height=bg_height,
   657                 node=revnode_hex, changenav=changenav)
   651                 jsdata=data, node=revnode_hex, changenav=changenav)