From: Jose Lamego <jose.a.lam...@intel.com> Reviewing patches from a series requires heavy usage of the browser navigation buttons, providing a poor UX.
This changes allows viewing content from each patch in a series, without leaving the series view. [YOCTO #10627] Signed-off-by: Jose Lamego <jose.a.lam...@intel.com> --- htdocs/js/series.js | 43 +++++++++++ patchwork/templates/patchwork/patch.html | 15 ++-- patchwork/templates/patchwork/series.html | 114 ++++++++++++++++-------------- 3 files changed, 113 insertions(+), 59 deletions(-) create mode 100644 htdocs/js/series.js diff --git a/htdocs/js/series.js b/htdocs/js/series.js new file mode 100644 index 0000000..4f4f477 --- /dev/null +++ b/htdocs/js/series.js @@ -0,0 +1,43 @@ +$(document).ready(function(){ + $('[data-toggle="tooltip"]').tooltip(); + revTab=document.getElementById('revs-list') + coverView=document.getElementById('cover-letter-view'), + patchView=document.getElementById('patch-view'), + patchList=document.getElementById('patches-list') + + revTab.style.border='none' + revTab.style.background='transparent' + revTab.style.padding='15px' + coverView.style.display='block' + patchView.style.display='none' + patchList.style.display='none' + + document.getElementById('cover-letter-tab').onclick=function(){ + coverView.style.display='block' + patchView.style.display='none' + patchList.style.display='none' + } + + document.getElementById('patches-tab').onclick=function(){ + coverView.style.display='none' + patchList.style.display='block' + patchView.style.display="none" + } + + $('#revs-list').on('change', function(e){ + var optionSelected=$("option:selected", this) + jQuery('.tab-content div.tab-pane.fade.in.active'). + removeClass(' in active') + jQuery('.tab-content div#'+this.value+'.tab-pane.fade'). + addClass(' in active') + patchView.style.display='none' + }) + + $('.patch-link').on('click', function(){ + coverView.style.display='none' + patchView.style.display='block' + patchView.innerHTML= + '<p style="text-align:center;">Loading patch...</p>' + $("#patch-view").load(this.getAttribute("data-url") + " #patch-body") + }) +}) diff --git a/patchwork/templates/patchwork/patch.html b/patchwork/templates/patchwork/patch.html index 5ce540d..59df19d 100644 --- a/patchwork/templates/patchwork/patch.html +++ b/patchwork/templates/patchwork/patch.html @@ -7,6 +7,7 @@ {% block title %}{{patch.name}}{% endblock %} {% block body %} + <script type="text/javascript"> function toggle_headers(link_id, headers_id) { @@ -25,10 +26,12 @@ function toggle_headers(link_id, headers_id) } </script> - +<div id="patch-body"> <h1>{{ patch.name }}</h1> <div class="core-info"> <span>Submitted by {{ patch.submitter|personify:project }} on {{ patch.date }}</span> + <span>|</span> + <span>Patch ID: <strong>{{ patch.id }}</strong></span> </div> <h2>Details</h2> @@ -134,10 +137,10 @@ function toggle_headers(link_id, headers_id) <form method="post"> {% csrf_token %} <input type="hidden" name="action" value="addtobundle"/> - <select name="bundle_id"/> - {% for bundle in bundles %} - <option value="{{bundle.id}}">{{bundle.name}}</option> - {% endfor %} + <select name="bundle_id"> + {% for bundle in bundles %} + <option value="{{bundle.id}}">{{bundle.name}}</option> + {% endfor %} </select> <input value="Add" type="submit"/> </form> @@ -219,5 +222,5 @@ function toggle_headers(link_id, headers_id) </pre> </div> {% endfor %} - +</div> {% endblock %} diff --git a/patchwork/templates/patchwork/series.html b/patchwork/templates/patchwork/series.html index c0a5261..6c35212 100644 --- a/patchwork/templates/patchwork/series.html +++ b/patchwork/templates/patchwork/series.html @@ -1,6 +1,7 @@ {% extends "base.html" %} {% load person %} +{% load static %} {% block title %}{{project.name}}{% endblock %} {% block headers %} @@ -9,64 +10,70 @@ $(function () { pw.setup_series({ patches: 'series-patchlist' }); }); </script> +<script type="text/javascript" src="{% static "js/series.js" %}"></script> {% endblock %} {% block body %} -<h1>{{ series.name }}</h1> - -<div class="core-info"> - <span>Submitted by {{ series.submitter|personify:project }} on {{ series.submitted }}</span> -</div> - -<h2>Details</h2> + <h1>{{ series.name }}</h1> + + <div class="core-info"> + <span data-toggle="tooltip" title="View all patches submitted by this user">Submitted by {{ series.submitter|personify:project }} on {{ series.submitted }}</span> + <span>|</span> + <span>Reviewer: {{ series.reviewer }}</span> + <span>|</span> + <span>Updated on: {{ series.last_updated }}</span> + <span>|</span> + <span>Series ID: <strong>{{ series.pk }}</strong></span> + </div> -<table class="patchmeta"> - <tr> - <th>Reviewer</th> -{% if series.reviewer %} - <td>{{ series.reviewer.name }}</td> -{% else %} - <td><em class="text-muted">None</em></td> -{% endif %} - </tr> - <tr> - <th>Submitted</th> - <td>{{ series.submitted }}</td> - </tr> - <tr> - <th>Last Updated</th> - <td>{{ series.last_updated }}</td> - </tr> - <tr> - <th>Revision</th> - <td>{{ series.last_revision.version }}</td> - </tr> -</table> + <nav class="navbar navbar-default" role="navigation" id="series-navigation"> + <div class="container-fluid"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse2"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + </div> + <div class="collapse navbar-collapse" id="navbar-collapse2"> + <ul class="nav navbar-nav"> + <li> + <select id="revs-list" data-toggle="tooltip" title="Select a Series Revision"> + {% for revision in revisions %} + <option {% if forloop.last %}selected="selected"{%endif%} value='rev{{ revision.version }}'> + Revision <strong>{{ revision.version }}</strong> + </option> + {% endfor %} + </select> + </li> + <li id="cover-letter-tab"> + <a href="#" data-toggle="tooltip" title="View the Cover Letter if available">Cover letter</a> + </li> + <li id="patches-tab"> + <a href="#" data-toggle="tooltip" title="List patches from selected revision"> + Patches ({{ series.latest_revision.n_patches }}) + </a> + </li> + </ul> + </div> + </div> + </nav> + <div id="cover-letter-view"> {% if cover_letter %} -<h2>Cover Letter</h2> - -<div class="comment"> - <pre class="content"> -{{ cover_letter }} - </pre> -</div> - + <h2>Cover Letter</h2> + <div class="comment"> + <pre class="content"> + {{ cover_letter }} + </pre> + </div> +{% else %} + <h2 style="color:#909090">No cover letter was found for this series.</h2> {% endif %} + </div> -<h2>Revisions</h2> - -<div> - - <ul class="nav nav-pills small-pills" data-tabs="tabs" role="tablist"> -{% for revision in revisions %} - <li role="presentation"{% if forloop.last %} class="active"{%endif%}> - <a data-toggle="pill" href="#rev{{ revision.version }}">rev {{ revision.version }}</a> - </li> -{% endfor %} - </ul> - - <div class="tab-content"> + <div class="tab-content" id="patches-list"> {% for revision in revisions %} <div role="tabpanel" id="rev{{ revision.version }}" class="tab-pane fade{% if forloop.last %} in active{% endif %}"> @@ -87,8 +94,7 @@ $(function () { {% for patch in revision.patch_list %} <tr> <td></td> - <td><a href="{% url 'patchwork.views.patch.patch' patch_id=patch.id %}" - >{{ patch.name|default:"[no subject]"|truncatechars:100 }}</a></td> + <td><a href="#" class="patch-link" data-toggle="tooltip" title="Click to view the patch at bottom section"data-url="{% url 'patchwork.views.patch.patch' patch_id=patch.id %}">{{ patch.name|default:"[no subject]"|truncatechars:100 }}</a></td> <td>{{ patch.submitter|personify:project }}</td> <td>{{ patch.state }}</td> <tr> @@ -101,7 +107,7 @@ $(function () { <h3>Tests</h3> <div class="well transparent"> - <div class="panel-group" id="test-accordion" role="tablist" aria-multiselectable="true"> + <div class="panel-group" id="test-accordion" role="tablist" aria-multiselectable="true" data-toggle="tooltip" title="Click to view/hide available test results"> {% for test_result in revision.test_results %} {% include "patchwork/test-result.html" %} {% endfor %} @@ -114,6 +120,8 @@ $(function () { {% endfor %} </div> + <div id="patch-view" class="container-fluid"></div> + </div> {% endblock %} -- 1.9.1 -- _______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto