changeset 6845:52adce4ffe89

changelog: make the table a re-usable template element This moves the changelog table to a separate template file, without further changes, except the necessary renaming to make it fully parameterized without accessing c directly. Based on work by Dominik Ruf.
author Mads Kiilerich <mads@kiilerich.com>
date Sun, 27 Aug 2017 16:39:35 +0200
parents cb3bdf436473
children 4f3447149c98
files kallithea/templates/changelog/changelog.html kallithea/templates/changelog/changelog_table.html
diffstat 2 files changed, 128 insertions(+), 114 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/templates/changelog/changelog.html	Sun Aug 27 16:39:35 2017 +0200
+++ b/kallithea/templates/changelog/changelog.html	Sun Aug 27 16:39:35 2017 +0200
@@ -2,6 +2,8 @@
 
 <%inherit file="/base/base.html"/>
 
+<%namespace name="changelog_table" file="changelog_table.html"/>
+
 <%block name="title">
     ${_('%s Changelog') % c.repo_name}
     %if c.changelog_for_path:
@@ -67,114 +69,13 @@
                 <div id="graph_nodes">
                     <canvas id="graph_canvas" style="width:0"></canvas>
                 </div>
+
                 <div id="graph_content" style="${'margin: 0px' if c.changelog_for_path else ''}">
-
-                <table class="table" id="changesets">
-                <tbody>
-                %for cnt,cs in enumerate(c.cs_pagination):
-                    <tr id="chg_${cnt+1}" class="${'mergerow' if len(cs.parents) > 1 else ''}">
-                        %if not c.changelog_for_path:
-                        <td class="checkbox-column">
-                            ${h.checkbox(cs.raw_id,class_="changeset_range")}
-                        </td>
-                        %endif
-                        <td class="status">
-                          %if c.cs_statuses.get(cs.raw_id):
-                            %if c.cs_statuses.get(cs.raw_id)[2]:
-                              <a data-toggle="tooltip" title="${_('Changeset status: %s by %s\nClick to open associated pull request %s') % (c.cs_statuses.get(cs.raw_id)[1], c.cs_statuses.get(cs.raw_id)[5].username, c.cs_statuses.get(cs.raw_id)[4])}" href="${h.url('pullrequest_show',repo_name=c.cs_statuses.get(cs.raw_id)[3],pull_request_id=c.cs_statuses.get(cs.raw_id)[2])}">
-                                <i class="icon-circle changeset-status-${c.cs_statuses.get(cs.raw_id)[0]}"></i>
-                              </a>
-                            %else:
-                              <a data-toggle="tooltip" title="${_('Changeset status: %s by %s') % (c.cs_statuses.get(cs.raw_id)[1], c.cs_statuses.get(cs.raw_id)[5].username)}"
-                                 href="${c.cs_comments[cs.raw_id][0].url()}">
-                                  <i class="icon-circle changeset-status-${c.cs_statuses.get(cs.raw_id)[0]}"></i>
-                              </a>
-                            %endif
-                          %endif
-                        </td>
-                        <td class="author" data-toggle="tooltip" title="${cs.author}">
-                            ${h.gravatar(h.email_or_none(cs.author), size=16)}
-                            <span class="user">${h.person(cs.author)}</span>
-                        </td>
-                        <td class="hash">
-                            ${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id), class_='changeset_hash')}
-                        </td>
-                        <td class="date">
-                            <div class="date" data-toggle="tooltip" title="${h.fmt_date(cs.date)}">${h.age(cs.date,True)}</div>
-                        </td>
-                        <% message_lines = cs.message.splitlines() %>
-                        %if len(message_lines) > 1:
-                        <td class="expand_commit" title="${_('Expand commit message')}">
-                            <i class="icon-align-left"></i>
-                        </td>
-                        %else:
-                        <td></td>
-                        %endif
-                        <td class="mid">
-                            <div class="log-container">
-                                <div class="message">
-                                    <div class="message-firstline">${h.urlify_text(message_lines[0], c.repo_name,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}</div>
-                                    %if len(message_lines) > 1:
-                                    <div class="message-full hidden">${h.urlify_text(cs.message, c.repo_name)}</div>
-                                    %endif
-                                </div>
-                                <div class="extra-container">
-                                    %if c.cs_comments.get(cs.raw_id):
-                                        <a class="comments-container comments-cnt" href="${c.cs_comments[cs.raw_id][0].url()}" data-toggle="tooltip" title="${_('%s comments') % len(c.cs_comments[cs.raw_id])}">
-                                            ${len(c.cs_comments[cs.raw_id])}
-                                            <i class="icon-comment-discussion"></i>
-                                        </a>
-                                    %endif
-                                    %if cs.bumped:
-                                        <span class="bumpedtag" title="Bumped">
-                                            Bumped
-                                        </span>
-                                    %endif
-                                    %if cs.divergent:
-                                        <span class="divergenttag" title="Divergent">
-                                            Divergent
-                                        </span>
-                                    %endif
-                                    %if cs.extinct:
-                                        <span class="extincttag" title="Extinct">
-                                            Extinct
-                                        </span>
-                                    %endif
-                                    %if cs.unstable:
-                                        <span class="unstabletag" title="Unstable">
-                                            Unstable
-                                        </span>
-                                    %endif
-                                    %if cs.phase:
-                                        <span class="phasetag" title="Phase">
-                                            ${cs.phase}
-                                        </span>
-                                    %endif
-                                    %for book in cs.bookmarks:
-                                        <span class="booktag" title="${_('Bookmark %s') % book}">
-                                            ${h.link_to(book,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
-                                        </span>
-                                    %endfor
-                                    %for tag in cs.tags:
-                                        <span class="tagtag" title="${_('Tag %s') % tag}">
-                                            ${h.link_to(tag,h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
-                                        </span>
-                                    %endfor
-                                    %if (not c.branch_name) and cs.branch:
-                                        <span class="branchtag" title="${_('Branch %s' % cs.branch)}">
-                                            ${h.link_to(cs.branch,h.url('changelog_home',repo_name=c.repo_name,branch=cs.branch))}
-                                        </span>
-                                    %endif
-                                </div>
-                            </div>
-                        </td>
-                    </tr>
-                %endfor
-                </tbody>
-                </table>
-
-                <input type="checkbox" id="singlerange" style="display:none"/>
-
+                  ${changelog_table.changelog(c.repo_name, c.cs_pagination, c.cs_statuses, c.cs_comments,
+                                              show_checkbox=not c.changelog_for_path,
+                                              show_branch=not c.branch_name,
+                                              resize_js='graph.render(jsdata)')}
+                  <input type="checkbox" id="singlerange" style="display:none"/>
                 </div>
 
                 ${c.cs_pagination.pager()}
@@ -291,13 +192,6 @@
                     }
                 });
 
-                $('.expand_commit').on('click',function(e){
-                    $(this).next('.mid').find('.message > div').toggleClass('hidden');
-
-                    //redraw the graph, r and jsdata are bound outside function
-                    graph.render(jsdata);
-                });
-
                 // change branch filter
                 $("#branch_filter").select2({
                     dropdownAutoWidth: true,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kallithea/templates/changelog/changelog_table.html	Sun Aug 27 16:39:35 2017 +0200
@@ -0,0 +1,120 @@
+## Render changelog table with id 'changesets' with the range of changesets,
+## statuses, and comments.
+## Optionally, pass a js snippet to run whenever a table resize is triggered.
+<%def name="changelog(repo_name, cs_range, cs_statuses, cs_comments, show_checkbox=False, show_branch=True, resize_js='')">
+    <table class="table" id="changesets">
+    <tbody>
+      %for cnt,cs in enumerate(cs_range):
+      <tr id="chg_${cnt+1}" class="${'mergerow' if len(cs.parents) > 1 else ''}">
+        %if show_checkbox:
+        <td class="checkbox-column">
+          ${h.checkbox(cs.raw_id,class_="changeset_range")}
+        </td>
+        %endif
+        <td class="status">
+          %if cs_statuses.get(cs.raw_id):
+            %if cs_statuses.get(cs.raw_id)[2]:
+              <a data-toggle="tooltip"
+                  title="${_('Changeset status: %s by %s\nClick to open associated pull request %s') % (cs_statuses.get(cs.raw_id)[1], cs_statuses.get(cs.raw_id)[5].username, cs_statuses.get(cs.raw_id)[4])}"
+                  href="${h.url('pullrequest_show',repo_name=cs_statuses.get(cs.raw_id)[3],pull_request_id=cs_statuses.get(cs.raw_id)[2])}">
+                <i class="icon-circle changeset-status-${cs_statuses.get(cs.raw_id)[0]}"></i>
+              </a>
+            %else:
+              <a data-toggle="tooltip"
+                  title="${_('Changeset status: %s by %s') % (cs_statuses.get(cs.raw_id)[1], cs_statuses.get(cs.raw_id)[5].username)}"
+                  href="${cs_comments[cs.raw_id][0].url()}">
+                <i class="icon-circle changeset-status-${cs_statuses.get(cs.raw_id)[0]}"></i>
+              </a>
+            %endif
+          %endif
+        </td>
+        <td class="author" data-toggle="tooltip" title="${cs.author}">
+          ${h.gravatar(h.email_or_none(cs.author), size=16)}
+          <span class="user">${h.person(cs.author)}</span>
+        </td>
+        <td class="hash">
+          ${h.link_to(h.show_id(cs),h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id), class_='changeset_hash')}
+        </td>
+        <td class="date">
+          <div class="date" data-toggle="tooltip" title="${h.fmt_date(cs.date)}">${h.age(cs.date,True)}</div>
+        </td>
+        <% message_lines = cs.message.splitlines() %>
+        %if len(message_lines) > 1:
+        <td class="expand_commit" title="${_('Expand commit message')}">
+          <i class="icon-align-left"></i>
+        </td>
+        %else:
+        <td></td>
+        %endif
+        <td class="mid">
+          <div class="log-container">
+            <div class="message">
+              <div class="message-firstline">${h.urlify_text(message_lines[0], c.repo_name,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}</div>
+              %if len(message_lines) > 1:
+              <div class="message-full hidden">${h.urlify_text(cs.message, repo_name)}</div>
+              %endif
+            </div>
+            <div class="extra-container">
+              %if cs_comments.get(cs.raw_id):
+                <a class="comments-container comments-cnt" href="${cs_comments[cs.raw_id][0].url()}" data-toggle="tooltip" title="${_('%s comments') % len(cs_comments[cs.raw_id])}">
+                  ${len(cs_comments[cs.raw_id])}
+                  <i class="icon-comment-discussion"></i>
+                </a>
+              %endif
+              %if cs.bumped:
+                <span class="bumpedtag" title="Bumped">
+                  Bumped
+                </span>
+              %endif
+              %if cs.divergent:
+                <span class="divergenttag" title="Divergent">
+                  Divergent
+                </span>
+              %endif
+              %if cs.extinct:
+                <span class="extincttag" title="Extinct">
+                  Extinct
+                </span>
+              %endif
+              %if cs.unstable:
+                <span class="unstabletag" title="Unstable">
+                  Unstable
+                </span>
+              %endif
+              %if cs.phase:
+                <span class="phasetag" title="Phase">
+                  ${cs.phase}
+                </span>
+              %endif
+              %for book in cs.bookmarks:
+                <span class="booktag" title="${_('Bookmark %s') % book}">
+                  ${h.link_to(book,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}
+                </span>
+              %endfor
+              %for tag in cs.tags:
+                <span class="tagtag" title="${_('Tag %s') % tag}">
+                  ${h.link_to(tag,h.url('changeset_home',repo_name=repo_name,revision=cs.raw_id))}
+                </span>
+              %endfor
+              %if show_branch and cs.branch:
+                <span class="branchtag" title="${_('Branch %s' % cs.branch)}">
+                  ${h.link_to(cs.branch,h.url('changelog_home',repo_name=repo_name,branch=cs.branch))}
+                </span>
+              %endif
+            </div>
+          </div>
+        </td>
+      </tr>
+      %endfor
+    </tbody>
+    </table>
+
+<script type="text/javascript">
+  $(document).ready(function() {
+    $('#changesets .expand_commit').on('click',function(e){
+      $(this).next('.mid').find('.message > div').toggleClass('hidden');
+      ${resize_js};
+    });
+  });
+</script>
+</%def>