[PATCH] web: Made elapsed time calculation dynamic (javascript).

Benoît Allard benoit at aeteurope.nl
Tue Apr 26 07:52:22 CDT 2011


Martin Geisler wrote:
> Benoît Allard <benoit at aeteurope.nl> writes:
>> Another solution that comes to mind would be to calculate the elapsed
>> time in javascript. That way, the content of the page is always the
>> same and can be safely cached.
> 
> Heh, that is much more elegant than the server-side solution I just
> outlined!
> 

Here it is !

As there are (really) long lines in the templates, you might get into 
trouble with line wrapping. For this reason, the patch is also enclosed 
as bundle.

# HG changeset patch
# User Benoit Allard <benoit at aeteurope.nl>
# Date 1303821734 -7200
# Node ID 64ca69686a618fd23f2aa4d9eff473f571c10b6f
# Parent  bcff4759d17dc7d6eec967b4ec2d7d12cde22cf7
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.

diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/coal/header.tmpl
--- a/mercurial/templates/coal/header.tmpl	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/coal/header.tmpl	Tue Apr 26 14:42:14 2011 +0200
@@ -4,3 +4,4 @@
  <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
  <meta name="robots" content="index, nofollow" />
  <link rel="stylesheet" href="{staticurl}style-coal.css" type="text/css" />
+<script type="text/javascript" src="{staticurl}timeago.js"></script>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/coal/map
--- a/mercurial/templates/coal/map	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/coal/map	Tue Apr 26 14:42:14 2011 +0200
@@ -197,7 +197,7 @@
      <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
      <td>{description}</td>
      <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
      <td class="indexlinks">{archives%indexarchiveentry}</td>
    </tr>\n'
  indexarchiveentry = '<a 
href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/gitweb/changelogentry.tmpl
--- a/mercurial/templates/gitweb/changelogentry.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/gitweb/changelogentry.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -1,5 +1,5 @@
  <div>
-<a class="title" 
href="{url}rev/{node|short}{sessionvars%urlparameter}"><span 
class="age">{date|age}</span>{desc|strip|firstline|escape|nonempty}<span 
class="logtags"> 
{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
+<a class="title" 
href="{url}rev/{node|short}{sessionvars%urlparameter}"><span 
class="age">{date|date}</span>{desc|strip|firstline|escape|nonempty}<span 
class="logtags"> 
{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a>
  </div>
  <div class="title_text">
  <div class="log_link">
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/gitweb/changeset.tmpl
--- a/mercurial/templates/gitweb/changeset.tmpl	Mon Apr 25 21:20:44 2011 
+0200
+++ b/mercurial/templates/gitweb/changeset.tmpl	Tue Apr 26 14:42:14 2011 
+0200
@@ -32,7 +32,7 @@
  <div class="title_text">
  <table cellspacing="0">
  <tr><td>author</td><td>{author|obfuscate}</td></tr>
-<tr><td></td><td>{date|date} ({date|age})</td></tr>
+<tr><td></td><td class="date age">{date|date}</td></tr>
  {branch%changesetbranch}
  <tr><td>changeset {rev}</td><td 
style="font-family:monospace">{node|short}</td></tr>
  {parent%changesetparent}
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/gitweb/fileannotate.tmpl
--- a/mercurial/templates/gitweb/fileannotate.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/gitweb/fileannotate.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -40,7 +40,7 @@
   <td>{author|obfuscate}</td></tr>
  <tr>
   <td></td>
- <td>{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
  {branch%filerevbranch}
  <tr>
   <td>changeset {rev}</td>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/gitweb/filerevision.tmpl
--- a/mercurial/templates/gitweb/filerevision.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/gitweb/filerevision.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -40,7 +40,7 @@
   <td>{author|obfuscate}</td></tr>
  <tr>
   <td></td>
- <td>{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
  {branch%filerevbranch}
  <tr>
   <td>changeset {rev}</td>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/gitweb/header.tmpl
--- a/mercurial/templates/gitweb/header.tmpl	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/gitweb/header.tmpl	Tue Apr 26 14:42:14 2011 +0200
@@ -5,4 +5,4 @@
  <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
  <meta name="robots" content="index, nofollow"/>
  <link rel="stylesheet" href="{staticurl}style-gitweb.css" 
type="text/css" />
-
+<script type="text/javascript" src="{staticurl}timeago.js"></script>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/gitweb/map
--- a/mercurial/templates/gitweb/map	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/gitweb/map	Tue Apr 26 14:42:14 2011 +0200
@@ -162,7 +162,7 @@
  tags = tags.tmpl
  tagentry = '
    <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
      <td><a class="list" 
href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
      <td class="link">
        <a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -173,7 +173,7 @@
  bookmarks = bookmarks.tmpl
  bookmarkentry = '
    <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
      <td><a class="list" 
href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{bookmark|escape}</b></a></td>
      <td class="link">
        <a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -184,7 +184,7 @@
  branches = branches.tmpl
  branchentry = '
    <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
      <td><a class="list" 
href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
      <td class="{status}">{branch|escape}</td>
      <td class="link">
@@ -228,7 +228,7 @@
  bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
  shortlogentry = '
    <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
      <td><i>{author|person}</i></td>
      <td>
        <a class="list" 
href="{url}rev/{node|short}{sessionvars%urlparameter}">
@@ -243,7 +243,7 @@
    </tr>'
  filelogentry = '
    <tr class="parity{parity}">
-    <td class="age"><i>{date|age}</i></td>
+    <td class="age"><i class="age">{date|date}</i></td>
      <td>
        <a class="list" 
href="{url}rev/{node|short}{sessionvars%urlparameter}">
          <b>{desc|strip|firstline|escape|nonempty}</b>
@@ -262,7 +262,7 @@
      </td>
      <td>{description}</td>
      <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
      <td class="indexlinks">{archives%indexarchiveentry}</td>
      <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a 
href="{url}atom-log">Atom</a></div></td>
    </tr>\n'
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/monoblue/changelogentry.tmpl
--- a/mercurial/templates/monoblue/changelogentry.tmpl	Mon Apr 25 
21:20:44 2011 +0200
+++ b/mercurial/templates/monoblue/changelogentry.tmpl	Tue Apr 26 
14:42:14 2011 +0200
@@ -1,6 +1,6 @@
  <h3 class="changelog"><a class="title" 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span 
class="logtags"> 
{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
  <ul class="changelog-entry">
-    <li class="age">{date|age}</li>
+    <li class="age">{date|date}</li>
      <li>by <span class="name">{author|obfuscate}</span> <span 
class="revdate">[{date|rfc822date}] rev {rev}</span></li>
      <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
  </ul>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/monoblue/changeset.tmpl
--- a/mercurial/templates/monoblue/changeset.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/monoblue/changeset.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -38,7 +38,7 @@
      <h2 class="no-link no-border">changeset</h2>

      <h3 class="changeset"><a 
href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} 
<span 
class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span></a></h3>
-    <p class="changeset-age"><span>{date|age}</span></p>
+    <p class="changeset-age age">{date|date}</p>

      <dl class="overview">
          <dt>author</dt>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/monoblue/fileannotate.tmpl
--- a/mercurial/templates/monoblue/fileannotate.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/monoblue/fileannotate.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -40,7 +40,7 @@

      <h2 class="no-link no-border">{file|escape}@{node|short} 
(annotated)</h2>
      <h3 class="changeset">{file|escape}</h3>
-    <p class="changeset-age"><span>{date|age}</span></p>
+    <p class="changeset-age age">{date|date}</p>

      <dl class="overview">
          <dt>author</dt>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/monoblue/filerevision.tmpl
--- a/mercurial/templates/monoblue/filerevision.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/monoblue/filerevision.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -40,7 +40,7 @@

      <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
      <h3 class="changeset">{file|escape}</h3>
-    <p class="changeset-age"><span>{date|age}</span></p>
+    <p class="changeset-age age">{date|date}</p>

      <dl class="overview">
          <dt>author</dt>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/monoblue/header.tmpl
--- a/mercurial/templates/monoblue/header.tmpl	Mon Apr 25 21:20:44 2011 
+0200
+++ b/mercurial/templates/monoblue/header.tmpl	Tue Apr 26 14:42:14 2011 
+0200
@@ -4,3 +4,4 @@
      <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
      <meta name="robots" content="index, nofollow"/>
      <link rel="stylesheet" href="{staticurl}style-monoblue.css" 
type="text/css" />
+    <script type="text/javascript" src="{staticurl}timeago.js"></script>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/monoblue/map
--- a/mercurial/templates/monoblue/map	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/monoblue/map	Tue Apr 26 14:42:14 2011 +0200
@@ -139,7 +139,7 @@
  tags = tags.tmpl
  tagentry = '
    <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
      <td><a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
      <td class="nowrap">
        <a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -150,7 +150,7 @@
  bookmarks = bookmarks.tmpl
  bookmarkentry = '
    <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap date">{date|date}</td>
      <td><a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
      <td class="nowrap">
        <a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
@@ -161,7 +161,7 @@
  branches = branches.tmpl
  branchentry = '
    <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
      <td><a 
href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
      <td class="{status}">{branch|escape}</td>
      <td class="nowrap">
@@ -194,7 +194,7 @@
  bookmarktag = '<span class="bookmarktag" title="{name}">{name}</span> '
  shortlogentry = '
    <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
      <td>{author|person}</td>
      <td>
        <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
@@ -209,7 +209,7 @@
    </tr>'
  filelogentry = '
    <tr class="parity{parity}">
-    <td class="nowrap">{date|age}</td>
+    <td class="nowrap age">{date|date}</td>
      <td><a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
      <td class="nowrap">
        <a 
href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a 
href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a 
href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
@@ -222,7 +222,7 @@
      <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
      <td>{description}</td>
      <td>{contact|obfuscate}</td>
-    <td>{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
      <td class="indexlinks">{archives%indexarchiveentry}</td>
      <td>
        <div class="rss_logo">
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/paper/changeset.tmpl
--- a/mercurial/templates/paper/changeset.tmpl	Mon Apr 25 21:20:44 2011 
+0200
+++ b/mercurial/templates/paper/changeset.tmpl	Tue Apr 26 14:42:14 2011 
+0200
@@ -49,7 +49,7 @@
  </tr>
  <tr>
   <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
  <tr>
   <th class="author">parents</th>
   <td class="author">{parent%changesetparent}</td>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/paper/fileannotate.tmpl
--- a/mercurial/templates/paper/fileannotate.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/paper/fileannotate.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -54,7 +54,7 @@
  </tr>
  <tr>
   <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
  </tr>
  <tr>
   <th class="author">parents</th>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/paper/filediff.tmpl
--- a/mercurial/templates/paper/filediff.tmpl	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/paper/filediff.tmpl	Tue Apr 26 14:42:14 2011 +0200
@@ -53,7 +53,7 @@
  </tr>
  <tr>
   <th>date</th>
- <td>{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
  </tr>
  <tr>
   <th>parents</th>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/paper/filelogentry.tmpl
--- a/mercurial/templates/paper/filelogentry.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/paper/filelogentry.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -1,5 +1,5 @@
   <tr class="parity{parity}">
-  <td class="age">{date|age}</td>
+  <td class="age">{date|date}</td>
    <td class="author">{author|person}</td>
    <td class="description"><a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}{rename%filelogrename}</td>
   </tr>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/paper/filerevision.tmpl
--- a/mercurial/templates/paper/filerevision.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/paper/filerevision.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -52,7 +52,7 @@
  </tr>
  <tr>
   <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
  </tr>
  <tr>
   <th class="author">parents</th>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/paper/header.tmpl
--- a/mercurial/templates/paper/header.tmpl	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/paper/header.tmpl	Tue Apr 26 14:42:14 2011 +0200
@@ -4,3 +4,4 @@
  <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
  <meta name="robots" content="index, nofollow" />
  <link rel="stylesheet" href="{staticurl}style-paper.css" 
type="text/css" />
+<script type="text/javascript" src="{staticurl}timeago.js"></script>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/paper/map
--- a/mercurial/templates/paper/map	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/paper/map	Tue Apr 26 14:42:14 2011 +0200
@@ -196,7 +196,7 @@
      <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
      <td>{description}</td>
      <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
      <td class="indexlinks">{archives%indexarchiveentry}</td>
    </tr>\n'
  indexarchiveentry = '<a 
href="{url}archive/{node|short}{extension|urlescape}">&nbsp;&darr;{type|escape}</a>'
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/paper/shortlogentry.tmpl
--- a/mercurial/templates/paper/shortlogentry.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/paper/shortlogentry.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -1,5 +1,5 @@
   <tr class="parity{parity}">
-  <td class="age">{age(date)}</td>
+  <td class="age">{date|date}</td>
    <td class="author">{author|person}</td>
    <td class="description"><a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags 
% '<span class="tag">{name|escape}</span> '}{bookmarks % '<span 
class="tag">{name|escape}</span> '}</td>
   </tr>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/spartan/changelogentry.tmpl
--- a/mercurial/templates/spartan/changelogentry.tmpl	Mon Apr 25 
21:20:44 2011 +0200
+++ b/mercurial/templates/spartan/changelogentry.tmpl	Tue Apr 26 
14:42:14 2011 +0200
@@ -1,6 +1,6 @@
  <table class="logEntry parity{parity}">
   <tr>
-  <th class="age">{date|age}:</th>
+  <th><span class="age">{date|date}</span>:</th>
    <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
   </tr>
   <tr>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/spartan/changeset.tmpl
--- a/mercurial/templates/spartan/changeset.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/spartan/changeset.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -31,7 +31,7 @@
  </tr>
  <tr>
   <th class="date">date:</th>
- <td class="date">{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
  </tr>
  <tr>
   <th class="files">files:</th>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/spartan/fileannotate.tmpl
--- a/mercurial/templates/spartan/fileannotate.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/spartan/fileannotate.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -30,7 +30,7 @@
   <td>{author|obfuscate}</td></tr>
  <tr>
   <td class="metatag">date:</td>
- <td>{date|date} ({date|age})</td>
+ <td class="date age">{date|date}</td>
  </tr>
  <tr>
   <td class="metatag">permissions:</td>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/spartan/filelogentry.tmpl
--- a/mercurial/templates/spartan/filelogentry.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/spartan/filelogentry.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -1,6 +1,6 @@
  <table class="logEntry parity{parity}">
   <tr>
-  <th class="age">{date|age}:</th>
+  <th><span class="age">{date|date}</span>:</th>
    <th class="firstline"><a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
   </tr>
   <tr>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/spartan/filerevision.tmpl
--- a/mercurial/templates/spartan/filerevision.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/spartan/filerevision.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -30,7 +30,7 @@
   <td>{author|obfuscate}</td></tr>
  <tr>
   <td class="metatag">date:</td>
- <td>{date|date} ({date|age})</td></tr>
+ <td class="date age">{date|date}</td></tr>
  <tr>
   <td class="metatag">permissions:</td>
   <td>{permissions|permissions}</td></tr>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/spartan/header.tmpl
--- a/mercurial/templates/spartan/header.tmpl	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/spartan/header.tmpl	Tue Apr 26 14:42:14 2011 +0200
@@ -4,3 +4,4 @@
  <link rel="icon" href="{staticurl}hgicon.png" type="image/png">
  <meta name="robots" content="index, nofollow" />
  <link rel="stylesheet" href="{staticurl}style.css" type="text/css" />
+<script type="text/javascript" src="{staticurl}timeago.js"></script>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/spartan/map
--- a/mercurial/templates/spartan/map	Mon Apr 25 21:20:44 2011 +0200
+++ b/mercurial/templates/spartan/map	Tue Apr 26 14:42:14 2011 +0200
@@ -168,7 +168,7 @@
      <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
      <td>{description}</td>
      <td>{contact|obfuscate}</td>
-    <td class="age">{lastchange|age}</td>
+    <td class="age">{lastchange|date}</td>
      <td class="indexlinks">
        <a href="{url}rss-log">RSS</a>
        <a href="{url}atom-log">Atom</a>
diff -r bcff4759d17d -r 64ca69686a61 
mercurial/templates/spartan/shortlogentry.tmpl
--- a/mercurial/templates/spartan/shortlogentry.tmpl	Mon Apr 25 21:20:44 
2011 +0200
+++ b/mercurial/templates/spartan/shortlogentry.tmpl	Tue Apr 26 14:42:14 
2011 +0200
@@ -1,6 +1,6 @@
  <table class="slogEntry parity{parity}">
   <tr>
-  <td class="age">{date|age}</td>
+  <td class="age">{date|date}</td>
    <td class="author">{author|person}</td>
    <td class="node"><a 
href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
   </tr>
diff -r bcff4759d17d -r 64ca69686a61 mercurial/templates/static/timeago.js
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/timeago.js	Tue Apr 26 14:42:14 2011 +0200
@@ -0,0 +1,81 @@
+// timeago.js - dynamically calculating the elapsed time
+//
+// derived from code from mercurial/templatefilter.py
+
+var scales = {
+    year:  365 * 24 * 60 * 60,
+    month:  30 * 24 * 60 * 60,
+    week:    7 * 24 * 60 * 60,
+    day:    24 * 60 * 60,
+    hour:   60 * 60,
+    minute: 60,
+    second: 1
+};
+
+function format(count, string){
+    var ret = count + ' ' + string;
+    if (count > 1){
+        ret = ret + 's';
+    }
+    return ret;
+}
+
+function age(datestr){
+    var now = new Date();
+    var once = new Date(datestr);
+
+    if (isNaN( once.getTime() )){
+	// parsing error
+        return datestr;
+    }
+
+    var delta = Math.floor((now.getTime() - once.getTime()) / 1000);
+
+    var future = false;
+    if (delta < 0){
+        future = true;
+        delta = -delta;
+        if (delta > (30 * scales.year)){
+	    return "in the distant future";
+        }
+    }
+
+    if (delta > (2 * scales.year)){
+        return once.getFullYear() + '-' + once.getMonth() + '-' + 
once.getDate();
+    }
+
+    for (unit in scales){
+        var s = scales[unit];
+        var n = Math.floor(delta / s);
+        if ((n >= 2) || (s == 1)){
+	    if (future){
+                return format(n, unit) + ' from now';
+	    } else {
+                return format(n, unit) + ' ago';
+	    }
+        }
+    }
+}
+
+function process_dates(){
+    var nodes = document.getElementsByTagName('*');
+    var ageclass = new RegExp('\\bage\\b');
+    var dateclass = new RegExp('\\bdate\\b');
+    for (var i=0; i<nodes.length; ++i){
+        var node = nodes[i];
+        var classes = node.className;
+        if (ageclass.test(classes)){
+            var agevalue = age(node.textContent);
+	    if (dateclass.test(classes)){
+                // We want both: date + (age)
+                node.textContent += ' ('+agevalue+')';
+	    } else {
+                node.textContent = agevalue;
+	    }
+        }
+    }
+}
+
+window.onload = function () {
+    process_dates();
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dynamicago.hg
Type: application/octet-stream
Size: 5275 bytes
Desc: not available
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20110426/ff782be6/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 6370 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20110426/ff782be6/attachment.bin>


More information about the Mercurial-devel mailing list