view mercurial/templates/monoblue/graph.tmpl @ 14046:b24e5a708fad

web: Made elapsed time calculation dynamic (javascript). This allow safe caching of the pages by the browser and still display the right amount of elapsed time upon page refresh. If javascript is disabled, absolute time is displayed, leaving it readable. All the templates have been updated.
author Benoit Allard <benoit@aeteurope.nl>
date Thu, 28 Apr 2011 17:02:39 +0200
parents b5b84dd43613
children 8fd18eb8aab7
line wrap: on
line source

{header}
    <title>{repo|escape}: graph</title>
    <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
    <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
    <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
</head>

<body>
<div id="container">
    <div class="page-header">
        <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph</h1>

        <form action="{url}log">
            {sessionvars%hiddenformentry}
            <dl class="search">
                <dt><label>Search: </label></dt>
                <dd><input type="text" name="rev" /></dd>
            </dl>
        </form>

        <ul class="page-nav">
            <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
            <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
            <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
            <li class="current">graph</li>
            <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
            <li><a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a></li>
            <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
            <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
	    <li><a href="{url}help{sessionvars%urlparameter}">help</a></li>
        </ul>
    </div>

    <h2 class="no-link no-border">graph</h2>

    <div id="noscript">The revision graph only works with JavaScript-enabled browsers.</div>
    <div id="wrapper">
        <ul id="nodebgs"></ul>
        <canvas id="graph" width="480" height="{canvasheight}"></canvas>
        <ul id="graphnodes"></ul>
    </div>

    <script>
    <!-- hide script content

    document.getElementById('noscript').style.display = 'none';

    var data = {jsdata|json};
    var graph = new Graph();
    graph.scale({bg_height});

    graph.edge = function(x0, y0, x1, y1, color) \{

        this.setColor(color, 0.0, 0.65);
        this.ctx.beginPath();
        this.ctx.moveTo(x0, y0);
        this.ctx.lineTo(x1, y1);
        this.ctx.stroke();

    }

    var revlink = '<li style="_STYLE"><span class="desc">';
    revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
    revlink += '</span>_TAGS<span class="info">_DATE, by _USER</span></li>';

    graph.vertex = function(x, y, color, parity, cur) \{

        this.ctx.beginPath();
        color = this.setColor(color, 0.25, 0.75);
        this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
        this.ctx.fill();

        var bg = '<li class="bg parity' + parity + '"></li>';
        var left = (this.columns + 1) * this.bg_height;
        var nstyle = 'padding-left: ' + left + 'px;';
        var item = revlink.replace(/_STYLE/, nstyle);
        item = item.replace(/_PARITY/, 'parity' + parity);
        item = item.replace(/_NODEID/, cur[0]);
        item = item.replace(/_NODEID/, cur[0]);
        item = item.replace(/_DESC/, cur[3]);
        item = item.replace(/_USER/, cur[4]);
        item = item.replace(/_DATE/, cur[5]);

        var tagspan = '';
        if (cur[7].length || cur[8].length || (cur[6][0] != 'default' || cur[6][1])) \{
            tagspan = '<span class="logtags">';
            if (cur[6][1]) \{
                tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
                tagspan += cur[6][0] + '</span> ';
            } else if (!cur[6][1] && cur[6][0] != 'default') \{
                tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
                tagspan += cur[6][0] + '</span> ';
            }
            if (cur[7].length) \{
                for (var t in cur[7]) \{
                    var tag = cur[7][t];
                    tagspan += '<span class="tagtag">' + tag + '</span> ';
                }
            }
            if (cur[8].length) \{
                for (var t in cur[8]) \{
                    var bookmark = cur[8][t];
                    tagspan += '<span class="bookmarktag">' + bookmark + '</span> ';
                }
            }
            tagspan += '</span>';
        }

        item = item.replace(/_TAGS/, tagspan);
        return [bg, item];

    }

    graph.render(data);

    // stop hiding script -->
    </script>

    <div class="page-path">
        <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
        <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
        | {changenav%navgraph}
    </div>

{footer}