All of lore.kernel.org
 help / color / mirror / Atom feed
* [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view
@ 2017-01-06 14:50 Jose Lamego
  2017-01-09 18:44 ` Khem Raj
  0 siblings, 1 reply; 6+ messages in thread
From: Jose Lamego @ 2017-01-06 14:50 UTC (permalink / raw)
  To: yocto; +Cc: Jose Lamego

From: Jose Lamego <jose.a.lamego@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.lamego@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



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view
  2017-01-06 14:50 [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view Jose Lamego
@ 2017-01-09 18:44 ` Khem Raj
  2017-01-09 20:21   ` Jose Lamego
  0 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2017-01-09 18:44 UTC (permalink / raw)
  To: Jose Lamego; +Cc: yocto, Jose Lamego

On Fri, Jan 6, 2017 at 6:50 AM, Jose Lamego
<jose.a.lamego@linux.intel.com> wrote:
> From: Jose Lamego <jose.a.lamego@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.
>

The patch looks fine to me. Are you also posting these to upstream patchwork ?

> [YOCTO #10627]
>
> Signed-off-by: Jose Lamego <jose.a.lamego@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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view
  2017-01-09 18:44 ` Khem Raj
@ 2017-01-09 20:21   ` Jose Lamego
  2017-01-09 20:30     ` Khem Raj
  0 siblings, 1 reply; 6+ messages in thread
From: Jose Lamego @ 2017-01-09 20:21 UTC (permalink / raw)
  To: Khem Raj; +Cc: yocto, Jose Lamego


[-- Attachment #1.1: Type: text/plain, Size: 11205 bytes --]



On 01/09/2017 12:44 PM, Khem Raj wrote:
> On Fri, Jan 6, 2017 at 6:50 AM, Jose Lamego
> <jose.a.lamego@linux.intel.com> wrote:
>> From: Jose Lamego <jose.a.lamego@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.
>>
> 
> The patch looks fine to me. Are you also posting these to upstream patchwork ?

Thanks for the review Khem. These changes currently are going only to
the Yocto-Patchwork repository [1]. Upstream [2] has been not-maintained
for a while.

You can view a working example of the view in patchwork-staging [3].
Production will be updated soon.

[1] https://git.yoctoproject.org/git/patchwork
[2] https://github.com/dlespiau/patchwork
[3] https://patchwork-staging.openembedded.org
> 
>> [YOCTO #10627]
>>
>> Signed-off-by: Jose Lamego <jose.a.lamego@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

-- 
Jose Lamego | OTC Embedded Platforms & Tools | GDC


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 501 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view
  2017-01-09 20:21   ` Jose Lamego
@ 2017-01-09 20:30     ` Khem Raj
  2017-01-09 20:34       ` Jose Lamego
  0 siblings, 1 reply; 6+ messages in thread
From: Khem Raj @ 2017-01-09 20:30 UTC (permalink / raw)
  To: Jose Lamego; +Cc: yocto, Jose Lamego

On Mon, Jan 9, 2017 at 12:21 PM, Jose Lamego
<jose.a.lamego@linux.intel.com> wrote:
>
>
> On 01/09/2017 12:44 PM, Khem Raj wrote:
>> On Fri, Jan 6, 2017 at 6:50 AM, Jose Lamego
>> <jose.a.lamego@linux.intel.com> wrote:
>>> From: Jose Lamego <jose.a.lamego@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.
>>>
>>
>> The patch looks fine to me. Are you also posting these to upstream patchwork ?
>
> Thanks for the review Khem. These changes currently are going only to
> the Yocto-Patchwork repository [1]. Upstream [2] has been not-maintained
> for a while.

The upstream is
http://jk.ozlabs.org/projects/patchwork/

>
> You can view a working example of the view in patchwork-staging [3].
> Production will be updated soon.
>
> [1] https://git.yoctoproject.org/git/patchwork
> [2] https://github.com/dlespiau/patchwork
> [3] https://patchwork-staging.openembedded.org
>>
>>> [YOCTO #10627]
>>>
>>> Signed-off-by: Jose Lamego <jose.a.lamego@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
>
> --
> Jose Lamego | OTC Embedded Platforms & Tools | GDC
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view
  2017-01-09 20:30     ` Khem Raj
@ 2017-01-09 20:34       ` Jose Lamego
  2017-01-09 20:51         ` Khem Raj
  0 siblings, 1 reply; 6+ messages in thread
From: Jose Lamego @ 2017-01-09 20:34 UTC (permalink / raw)
  To: Khem Raj; +Cc: yocto, Jose Lamego


[-- Attachment #1.1: Type: text/plain, Size: 12243 bytes --]



On 01/09/2017 02:30 PM, Khem Raj wrote:
> On Mon, Jan 9, 2017 at 12:21 PM, Jose Lamego
> <jose.a.lamego@linux.intel.com> wrote:
>>
>>
>> On 01/09/2017 12:44 PM, Khem Raj wrote:
>>> On Fri, Jan 6, 2017 at 6:50 AM, Jose Lamego
>>> <jose.a.lamego@linux.intel.com> wrote:
>>>> From: Jose Lamego <jose.a.lamego@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.
>>>>
>>>
>>> The patch looks fine to me. Are you also posting these to upstream patchwork ?
>>
>> Thanks for the review Khem. These changes currently are going only to
>> the Yocto-Patchwork repository [1]. Upstream [2] has been not-maintained
>> for a while.
> 
> The upstream is
> http://jk.ozlabs.org/projects/patchwork/
> 
Yes, freedesktop's patchwork forked from ozlabs' but diverged some time
ago. I haven't try to apply these changes on top of that (maybe worth it).
>>
>> You can view a working example of the view in patchwork-staging [3].
>> Production will be updated soon.
>>
>> [1] https://git.yoctoproject.org/git/patchwork
>> [2] https://github.com/dlespiau/patchwork
>> [3] https://patchwork-staging.openembedded.org
>>>
>>>> [YOCTO #10627]
>>>>
>>>> Signed-off-by: Jose Lamego <jose.a.lamego@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
>>
>> --
>> Jose Lamego | OTC Embedded Platforms & Tools | GDC
>>

-- 
Jose Lamego | OTC Embedded Platforms & Tools | GDC


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 501 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view
  2017-01-09 20:34       ` Jose Lamego
@ 2017-01-09 20:51         ` Khem Raj
  0 siblings, 0 replies; 6+ messages in thread
From: Khem Raj @ 2017-01-09 20:51 UTC (permalink / raw)
  To: Jose Lamego; +Cc: yocto, Jose Lamego

I just want to make sure that we dont pile collection of patches that
we end up maintaining forever.

On Mon, Jan 9, 2017 at 12:34 PM, Jose Lamego
<jose.a.lamego@linux.intel.com> wrote:
>
>
> On 01/09/2017 02:30 PM, Khem Raj wrote:
>> On Mon, Jan 9, 2017 at 12:21 PM, Jose Lamego
>> <jose.a.lamego@linux.intel.com> wrote:
>>>
>>>
>>> On 01/09/2017 12:44 PM, Khem Raj wrote:
>>>> On Fri, Jan 6, 2017 at 6:50 AM, Jose Lamego
>>>> <jose.a.lamego@linux.intel.com> wrote:
>>>>> From: Jose Lamego <jose.a.lamego@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.
>>>>>
>>>>
>>>> The patch looks fine to me. Are you also posting these to upstream patchwork ?
>>>
>>> Thanks for the review Khem. These changes currently are going only to
>>> the Yocto-Patchwork repository [1]. Upstream [2] has been not-maintained
>>> for a while.
>>
>> The upstream is
>> http://jk.ozlabs.org/projects/patchwork/
>>
> Yes, freedesktop's patchwork forked from ozlabs' but diverged some time
> ago. I haven't try to apply these changes on top of that (maybe worth it).
>>>
>>> You can view a working example of the view in patchwork-staging [3].
>>> Production will be updated soon.
>>>
>>> [1] https://git.yoctoproject.org/git/patchwork
>>> [2] https://github.com/dlespiau/patchwork
>>> [3] https://patchwork-staging.openembedded.org
>>>>
>>>>> [YOCTO #10627]
>>>>>
>>>>> Signed-off-by: Jose Lamego <jose.a.lamego@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
>>>
>>> --
>>> Jose Lamego | OTC Embedded Platforms & Tools | GDC
>>>
>
> --
> Jose Lamego | OTC Embedded Platforms & Tools | GDC
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-01-09 20:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-06 14:50 [patchwork][PATCH] patchwork/templates/patchwork/series: Improve series view Jose Lamego
2017-01-09 18:44 ` Khem Raj
2017-01-09 20:21   ` Jose Lamego
2017-01-09 20:30     ` Khem Raj
2017-01-09 20:34       ` Jose Lamego
2017-01-09 20:51         ` Khem Raj

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.