[PATCH 2 of 3] paper, coal: display diffstat on the changeset page

Steven Brown stevengbrown at gmail.com
Thu Jun 2 08:12:15 CDT 2011


# HG changeset patch
# User Steven Brown <StevenGBrown at gmail.com>
# Date 1307014711 -28800
# Node ID b76b2ca94099121ed0b073af7db51853b07ee4c3
# Parent  a9941bd9c6b03f2cb17e0183ca63736cad16097f
paper, coal: display diffstat on the changeset page

The list of changed files can be expanded to display the diffstat. This expanded
view also includes 'file', 'annotate', 'diff' and 'revisions' links, similar to
the monoblue changeset page.

diff --git a/mercurial/templates/coal/map b/mercurial/templates/coal/map
--- a/mercurial/templates/coal/map
+++ b/mercurial/templates/coal/map
@@ -23,6 +23,36 @@
 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
 filenolink = '{file|escape} '
 fileellipses = '...'
+diffstatlink = '
+  <tr class="parity{parity}">
+    <td class="diffstat-files"><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
+    <td align="right">{total}</td>
+    <td class="diffstat">
+      <span class="diffstat-add" style="width:{addpct}%;">&nbsp;</span>
+      <span class="diffstat-remove" style="width:{removepct}%;">&nbsp;</span>
+    </td>
+    <td class="diffstat-links">
+      <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+      <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
+      <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+      <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+    </td>
+  </tr>'
+diffstatnolink = '
+  <tr class="parity{parity}">
+    <td class="diffstat-files"><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
+    <td align="right">{total}</td>
+    <td class="diffstat">
+      <span class="diffstat-add" style="width:{addpct}%;">&nbsp;</span>
+      <span class="diffstat-remove" style="width:{removepct}%;">&nbsp;</span>
+    </td>
+    <td class="diffstat-links">
+      file |
+      annotate |
+      <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+      <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+    </td>
+  </tr>'
 changelogentry = ../paper/shortlogentry.tmpl
 searchentry = ../paper/shortlogentry.tmpl
 changeset = ../paper/changeset.tmpl
diff --git a/mercurial/templates/paper/changeset.tmpl b/mercurial/templates/paper/changeset.tmpl
--- a/mercurial/templates/paper/changeset.tmpl
+++ b/mercurial/templates/paper/changeset.tmpl
@@ -60,7 +60,13 @@
 </tr>
 <tr>
  <th class="files">files</th>
- <td class="files">{files}</td>
+ <td class="files">
+  <div id="files">{files} <a href="javascript:showDiffstat()"/>[+]</a></div>
+  <div id="diffstat" style="display:none;">
+    <table id="diffstat">{diffstat}</table>
+    <a href="javascript:hideDiffstat()"/>[-]</a>
+  </div>
+ </td>
 </tr>
 </table>
 
diff --git a/mercurial/templates/paper/map b/mercurial/templates/paper/map
--- a/mercurial/templates/paper/map
+++ b/mercurial/templates/paper/map
@@ -22,6 +22,37 @@
 filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
 filenolink = '{file|escape} '
 fileellipses = '...'
+diffstatlink = '
+  <tr class="parity{parity}">
+    <td class="diffstat-files"><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
+    <td align="right">{total}</td>
+    <td class="diffstat">
+      <span class="diffstat-add" style="width:{addpct}%;">&nbsp;</span>
+      <span class="diffstat-remove" style="width:{removepct}%;">&nbsp;</span>
+    </td>
+    <td class="diffstat-links">
+      <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+      <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
+      <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+      <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+    </td>
+  </tr>'
+diffstatnolink = '
+  <tr class="parity{parity}">
+    <td class="diffstat-files"><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
+    <td align="right">{total}</td>
+    <td class="diffstat">
+      <span class="diffstat-add" style="width:{addpct}%;">&nbsp;</span>
+      <span class="diffstat-remove" style="width:{removepct}%;">&nbsp;</span>
+    </td>
+    <td class="diffstat-links">
+      file |
+      annotate |
+      <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+      <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+    </td>
+  </tr>'
+
 changelogentry = shortlogentry.tmpl
 searchentry = shortlogentry.tmpl
 changeset = changeset.tmpl
diff --git a/mercurial/templates/static/mercurial.js b/mercurial/templates/static/mercurial.js
--- a/mercurial/templates/static/mercurial.js
+++ b/mercurial/templates/static/mercurial.js
@@ -2,6 +2,7 @@
 //
 // Rendering of branch DAGs on the client side
 // Display of elapsed time
+// Show or hide diffstat
 //
 // Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
 // Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
@@ -218,3 +219,13 @@
 		}
 	}
 })(document, RegExp, Math, isNaN, Date, false, true)
+
+function showDiffstat() {
+	document.getElementById('files').style.display = 'none';
+	document.getElementById('diffstat').style.display = 'block';
+}
+
+function hideDiffstat() {
+	document.getElementById('diffstat').style.display = 'none';
+	document.getElementById('files').style.display = 'block';
+}
diff --git a/mercurial/templates/static/style-coal.css b/mercurial/templates/static/style-coal.css
--- a/mercurial/templates/static/style-coal.css
+++ b/mercurial/templates/static/style-coal.css
@@ -103,6 +103,24 @@
 .minusline { color: #dc143c; } /* crimson */
 .atline { color: purple; }
 
+td.diffstat {
+  width:100%;
+}
+td.diffstat-files {
+  white-space:nowrap;
+}
+td.diffstat-links {
+  white-space:nowrap;
+}
+span.diffstat-add {
+  background-color: green;
+  float: left;
+}
+span.diffstat-remove {
+  background-color: red;
+  float: left;
+}
+
 .navigate {
   text-align: right;
   font-size: 60%;
diff --git a/mercurial/templates/static/style-paper.css b/mercurial/templates/static/style-paper.css
--- a/mercurial/templates/static/style-paper.css
+++ b/mercurial/templates/static/style-paper.css
@@ -94,6 +94,24 @@
 .minusline { color: #dc143c; } /* crimson */
 .atline { color: purple; }
 
+td.diffstat {
+  width:100%;
+}
+td.diffstat-files {
+  white-space:nowrap;
+}
+td.diffstat-links {
+  white-space:nowrap;
+}
+span.diffstat-add {
+  background-color: green;
+  float: left;
+}
+span.diffstat-remove {
+  background-color: red;
+  float: left;
+}
+
 .navigate {
   text-align: right;
   font-size: 60%;
diff --git a/tests/test-hgweb-commands.t b/tests/test-hgweb-commands.t
--- a/tests/test-hgweb-commands.t
+++ b/tests/test-hgweb-commands.t
@@ -350,7 +350,41 @@
   </tr>
   <tr>
    <th class="files">files</th>
-   <td class="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a> </td>
+   <td class="files">
+    <div id="files"><a href="/file/2ef0ac749a14/da/foo">da/foo</a> <a href="/file/2ef0ac749a14/foo">foo</a>  <a href="javascript:showDiffstat()"/>[+]</a></div>
+    <div id="diffstat" style="display:none;">
+      <table id="diffstat">
+  <tr class="parity0">
+  <td class="diffstat-files"><a href="/diff/2ef0ac749a14/da/foo">da/foo</a></td>
+  <td align="right">1</td>
+  <td class="diffstat">
+  <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
+  <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
+  </td>
+  <td class="diffstat-links">
+  <a href="/file/2ef0ac749a14/da/foo">file</a> |
+  <a href="/annotate/2ef0ac749a14/da/foo">annotate</a> |
+  <a href="/diff/2ef0ac749a14/da/foo">diff</a> |
+  <a href="/log/2ef0ac749a14/da/foo">revisions</a>
+  </td>
+  </tr>
+  <tr class="parity1">
+  <td class="diffstat-files"><a href="/diff/2ef0ac749a14/foo">foo</a></td>
+  <td align="right">1</td>
+  <td class="diffstat">
+  <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
+  <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
+  </td>
+  <td class="diffstat-links">
+  <a href="/file/2ef0ac749a14/foo">file</a> |
+  <a href="/annotate/2ef0ac749a14/foo">annotate</a> |
+  <a href="/diff/2ef0ac749a14/foo">diff</a> |
+  <a href="/log/2ef0ac749a14/foo">revisions</a>
+  </td>
+  </tr></table>
+      <a href="javascript:hideDiffstat()"/>[-]</a>
+    </div>
+   </td>
   </tr>
   </table>
   
diff --git a/tests/test-hgweb-diffs.t b/tests/test-hgweb-diffs.t
--- a/tests/test-hgweb-diffs.t
+++ b/tests/test-hgweb-diffs.t
@@ -92,7 +92,41 @@
   </tr>
   <tr>
    <th class="files">files</th>
-   <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
+   <td class="files">
+    <div id="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a>  <a href="javascript:showDiffstat()"/>[+]</a></div>
+    <div id="diffstat" style="display:none;">
+      <table id="diffstat">
+  <tr class="parity0">
+  <td class="diffstat-files"><a href="/diff/0cd96de13884/a">a</a></td>
+  <td align="right">1</td>
+  <td class="diffstat">
+  <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
+  <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
+  </td>
+  <td class="diffstat-links">
+  <a href="/file/0cd96de13884/a">file</a> |
+  <a href="/annotate/0cd96de13884/a">annotate</a> |
+  <a href="/diff/0cd96de13884/a">diff</a> |
+  <a href="/log/0cd96de13884/a">revisions</a>
+  </td>
+  </tr>
+  <tr class="parity1">
+  <td class="diffstat-files"><a href="/diff/0cd96de13884/b">b</a></td>
+  <td align="right">1</td>
+  <td class="diffstat">
+  <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
+  <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
+  </td>
+  <td class="diffstat-links">
+  <a href="/file/0cd96de13884/b">file</a> |
+  <a href="/annotate/0cd96de13884/b">annotate</a> |
+  <a href="/diff/0cd96de13884/b">diff</a> |
+  <a href="/log/0cd96de13884/b">revisions</a>
+  </td>
+  </tr></table>
+      <a href="javascript:hideDiffstat()"/>[-]</a>
+    </div>
+   </td>
   </tr>
   </table>
   
@@ -323,7 +357,41 @@
   </tr>
   <tr>
    <th class="files">files</th>
-   <td class="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a> </td>
+   <td class="files">
+    <div id="files"><a href="/file/0cd96de13884/a">a</a> <a href="/file/0cd96de13884/b">b</a>  <a href="javascript:showDiffstat()"/>[+]</a></div>
+    <div id="diffstat" style="display:none;">
+      <table id="diffstat">
+  <tr class="parity0">
+  <td class="diffstat-files"><a href="/diff/0cd96de13884/a">a</a></td>
+  <td align="right">1</td>
+  <td class="diffstat">
+  <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
+  <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
+  </td>
+  <td class="diffstat-links">
+  <a href="/file/0cd96de13884/a">file</a> |
+  <a href="/annotate/0cd96de13884/a">annotate</a> |
+  <a href="/diff/0cd96de13884/a">diff</a> |
+  <a href="/log/0cd96de13884/a">revisions</a>
+  </td>
+  </tr>
+  <tr class="parity1">
+  <td class="diffstat-files"><a href="/diff/0cd96de13884/b">b</a></td>
+  <td align="right">1</td>
+  <td class="diffstat">
+  <span class="diffstat-add" style="width:100.0%;">&nbsp;</span>
+  <span class="diffstat-remove" style="width:0.0%;">&nbsp;</span>
+  </td>
+  <td class="diffstat-links">
+  <a href="/file/0cd96de13884/b">file</a> |
+  <a href="/annotate/0cd96de13884/b">annotate</a> |
+  <a href="/diff/0cd96de13884/b">diff</a> |
+  <a href="/log/0cd96de13884/b">revisions</a>
+  </td>
+  </tr></table>
+      <a href="javascript:hideDiffstat()"/>[-]</a>
+    </div>
+   </td>
   </tr>
   </table>
   
diff --git a/tests/test-hgweb-removed.t b/tests/test-hgweb-removed.t
--- a/tests/test-hgweb-removed.t
+++ b/tests/test-hgweb-removed.t
@@ -87,7 +87,27 @@
   </tr>
   <tr>
    <th class="files">files</th>
-   <td class="files">a </td>
+   <td class="files">
+    <div id="files">a  <a href="javascript:showDiffstat()"/>[+]</a></div>
+    <div id="diffstat" style="display:none;">
+      <table id="diffstat">
+  <tr class="parity0">
+  <td class="diffstat-files"><a href="/diff/c78f6c5cbea9/a">a</a></td>
+  <td align="right">1</td>
+  <td class="diffstat">
+  <span class="diffstat-add" style="width:0.0%;">&nbsp;</span>
+  <span class="diffstat-remove" style="width:100.0%;">&nbsp;</span>
+  </td>
+  <td class="diffstat-links">
+  file |
+  annotate |
+  <a href="/diff/c78f6c5cbea9/a">diff</a> |
+  <a href="/log/c78f6c5cbea9/a">revisions</a>
+  </td>
+  </tr></table>
+      <a href="javascript:hideDiffstat()"/>[-]</a>
+    </div>
+   </td>
   </tr>
   </table>
   


More information about the Mercurial-devel mailing list