mercurial/hgweb/webcommands.py
changeset 16773 d490edc71146
parent 16727 3e24ce3de5f1
child 17146 6b40cc67ceb4
equal deleted inserted replaced
16770:b3435385f99f 16773:d490edc71146
   782     if rev < web.maxshortchanges:
   782     if rev < web.maxshortchanges:
   783         startrev = uprev
   783         startrev = uprev
   784 
   784 
   785     dag = graphmod.dagwalker(web.repo, range(startrev, downrev - 1, -1))
   785     dag = graphmod.dagwalker(web.repo, range(startrev, downrev - 1, -1))
   786     tree = list(graphmod.colored(dag, web.repo))
   786     tree = list(graphmod.colored(dag, web.repo))
   787     canvasheight = (len(tree) + 1) * bg_height - 27
   787 
   788     data = []
   788     def getcolumns(tree):
   789     for (id, type, ctx, vtx, edges) in tree:
   789         cols = 0
   790         if type != graphmod.CHANGESET:
   790         for (id, type, ctx, vtx, edges) in tree:
   791             continue
   791             if type != graphmod.CHANGESET:
   792         node = str(ctx)
   792                 continue
   793         age = templatefilters.age(ctx.date())
   793             cols = max(cols, max([edge[0] for edge in edges] or [0]),
   794         desc = templatefilters.firstline(ctx.description())
   794                              max([edge[1] for edge in edges] or [0]))
   795         desc = cgi.escape(templatefilters.nonempty(desc))
   795         return cols
   796         user = cgi.escape(templatefilters.person(ctx.user()))
   796 
   797         branch = ctx.branch()
   797     def graphdata(usetuples, **map):
   798         try:
   798         data = []
   799             branchnode = web.repo.branchtip(branch)
   799 
   800         except error.RepoLookupError:
   800         row = 0
   801             branchnode = None
   801         for (id, type, ctx, vtx, edges) in tree:
   802         branch = branch, branchnode == ctx.node()
   802             if type != graphmod.CHANGESET:
   803         data.append((node, vtx, edges, desc, user, age, branch, ctx.tags(),
   803                 continue
   804                      ctx.bookmarks()))
   804             node = str(ctx)
       
   805             age = templatefilters.age(ctx.date())
       
   806             desc = templatefilters.firstline(ctx.description())
       
   807             desc = cgi.escape(templatefilters.nonempty(desc))
       
   808             user = cgi.escape(templatefilters.person(ctx.user()))
       
   809             branch = ctx.branch()
       
   810             try:
       
   811                 branchnode = web.repo.branchtip(branch)
       
   812             except error.RepoLookupError:
       
   813                 branchnode = None
       
   814             branch = branch, branchnode == ctx.node()
       
   815 
       
   816             if usetuples:
       
   817                 data.append((node, vtx, edges, desc, user, age, branch,
       
   818                              ctx.tags(), ctx.bookmarks()))
       
   819             else:
       
   820                 edgedata = [dict(col=edge[0], nextcol=edge[1],
       
   821                                  color=(edge[2] - 1) % 6 + 1,
       
   822                                  width=edge[3], bcolor=edge[4])
       
   823                             for edge in edges]
       
   824 
       
   825                 data.append(
       
   826                     dict(node=node,
       
   827                          col=vtx[0],
       
   828                          color=(vtx[1] - 1) % 6 + 1,
       
   829                          edges=edgedata,
       
   830                          row=row,
       
   831                          nextrow=row + 1,
       
   832                          desc=desc,
       
   833                          user=user,
       
   834                          age=age,
       
   835                          bookmarks=webutil.nodebookmarksdict(
       
   836                             web.repo, ctx.node()),
       
   837                          branches=webutil.nodebranchdict(web.repo, ctx),
       
   838                          inbranch=webutil.nodeinbranch(web.repo, ctx),
       
   839                          tags=webutil.nodetagsdict(web.repo, ctx.node())))
       
   840 
       
   841             row += 1
       
   842 
       
   843         return data
       
   844 
       
   845     cols = getcolumns(tree)
       
   846     rows = len(tree)
       
   847     canvasheight = (rows + 1) * bg_height - 27
   805 
   848 
   806     return tmpl('graph', rev=rev, revcount=revcount, uprev=uprev,
   849     return tmpl('graph', rev=rev, revcount=revcount, uprev=uprev,
   807                 lessvars=lessvars, morevars=morevars, downrev=downrev,
   850                 lessvars=lessvars, morevars=morevars, downrev=downrev,
   808                 canvasheight=canvasheight, jsdata=data, bg_height=bg_height,
   851                 cols=cols, rows=rows,
       
   852                 canvaswidth=(cols + 1) * bg_height,
       
   853                 truecanvasheight=rows * bg_height,
       
   854                 canvasheight=canvasheight, bg_height=bg_height,
       
   855                 jsdata=lambda **x: graphdata(True, **x),
       
   856                 nodes=lambda **x: graphdata(False, **x),
   809                 node=revnode_hex, changenav=changenav)
   857                 node=revnode_hex, changenav=changenav)
   810 
   858 
   811 def _getdoc(e):
   859 def _getdoc(e):
   812     doc = e[0].__doc__
   860     doc = e[0].__doc__
   813     if doc:
   861     if doc: