Mercurial > hg
view mercurial/templates/gitweb/graph.tmpl @ 15375:fe9d36a6853e stable
hgweb: fix dynamic date calculation not working under Safari
While Chrome, Firefox, and IE 6+ support the current date format being
passed to Date(), Safari doesn't:
> new Date('Mon Oct 24 13:58:01 2011 +0200')
Invalid Date
However, the rfc822date format--officially supported by
ECMAScript[1]--does work:
> new Date('Mon, 24 Oct 2011 13:58:01 +0200')
Mon Oct 24 2011 04:58:01 GMT-0700 (PDT)
This change replaces all instances of {date|date} in HTML with
{date|rfc822date}. For elements that only have the "age" class,
there's no outward change for users with JavaScript enabled. For
elements with both the "age" and "date" classes, the full date
displayed uses the new format.
Tested in IE 6, Safari 5.1.1, Google Chrome 15, and Firefox 7.0.1.
[1]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Thu, 27 Oct 2011 11:57:08 -0700 |
parents | b24e5a708fad |
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 class="page_header"> <a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph </div> <form action="{url}log"> {sessionvars%hiddenformentry} <div class="search"> <input type="text" name="rev" /> </div> </form> <div class="page_nav"> <a href="{url}summary{sessionvars%urlparameter}">summary</a> | <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> | <a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> | graph | <a href="{url}tags{sessionvars%urlparameter}">tags</a> | <a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> | <a href="{url}branches{sessionvars%urlparameter}">branches</a> | <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> | <a href="{url}help{sessionvars%urlparameter}">help</a> <br/> <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a> <a href="{url}graph/{rev}{morevars%urlparameter}">more</a> | {changenav%navgraph}<br/> </div> <div class="title"> </div> <noscript>The revision graph only works with JavaScript-enabled browsers.</noscript> <div id="wrapper"> <ul id="nodebgs"></ul> <canvas id="graph" width="480" height="{canvasheight}"></canvas> <ul id="graphnodes"></ul> </div> <script> <!-- hide script content 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 class="list" href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID"><b>_DESC</b></a>'; revlink += '</span> _TAGS'; revlink += '<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_nav"> <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a> <a href="{url}graph/{rev}{morevars%urlparameter}">more</a> | {changenav%navgraph} </div> {footer}