Beautify check counts in the patch list view
diff mbox series

Message ID 20190108123834.2225-7-alialnu@mellanox.com
State Accepted
Headers show
Series
  • Beautify check counts in the patch list view
Related show

Commit Message

Ali Alnubani Jan. 8, 2019, 12:38 p.m. UTC
This patch [1] adds colors to the checks in the patch list view.
The colors are set based on the check's priority, with FAILURE
having the highest priority, followed by WARNING, and then SUCCESS.
Only the check with the highest priority and non-zero count
will be colored. This is to make failures and warnings more visible.

The patch also [2] replaces zero counts with a '-' for
FAILUREs and WARNINGs.
The SUCCESS count will only be replaced by a '-'
when all other checks have zero counts too.

Suggested-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
---
 htdocs/css/style.css            | 21 +++++++++++++++++++++
 patchwork/templatetags/patch.py | 26 +++++++++++++++++++++++++-
 2 files changed, 46 insertions(+), 1 deletion(-)

Comments

Ali Alnubani Jan. 8, 2019, 12:52 p.m. UTC | #1
Hi all,

An example of what this patch does can be seen on http://patches.dpdk.org/project/dpdk/list/.

If you have any suggestions or better approaches to improve the code, please let me know.

Thanks,
Ali

> -----Original Message-----
> From: Patchwork <patchwork-
> bounces+alialnu=mellanox.com@lists.ozlabs.org> On Behalf Of Ali Alnubani
> Sent: Tuesday, January 8, 2019 2:39 PM
> To: patchwork@lists.ozlabs.org
> Cc: Thomas Monjalon <thomas@monjalon.net>
> Subject: [PATCH] Beautify check counts in the patch list view
> 
> This patch [1] adds colors to the checks in the patch list view.
> The colors are set based on the check's priority, with FAILURE having the
> highest priority, followed by WARNING, and then SUCCESS.
> Only the check with the highest priority and non-zero count will be colored.
> This is to make failures and warnings more visible.
> 
> The patch also [2] replaces zero counts with a '-' for FAILUREs and
> WARNINGs.
> The SUCCESS count will only be replaced by a '-'
> when all other checks have zero counts too.
> 
> Suggested-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: Ali Alnubani <alialnu@mellanox.com>
> ---
>  htdocs/css/style.css            | 21 +++++++++++++++++++++
>  patchwork/templatetags/patch.py | 26 +++++++++++++++++++++++++-
>  2 files changed, 46 insertions(+), 1 deletion(-)
> 
> diff --git a/htdocs/css/style.css b/htdocs/css/style.css index
> 6b2a80a..1c95174 100644
> --- a/htdocs/css/style.css
> +++ b/htdocs/css/style.css
> @@ -240,6 +240,27 @@ table.patchmeta tr th, table.patchmeta tr td {
>  	text-decoration: underline;
>  }
> 
> +.patchlistchecks {
> +	border-radius: 7px;
> +	padding: 3px;
> +}
> +
> +.patchlistchecks.success {
> +	background-color: #82ca9d;
> +}
> +
> +.patchlistchecks.warning {
> +	background-color: #ffc95e;
> +}
> +
> +.patchlistchecks.fail {
> +	background-color: #ff5555;
> +}
> +
> +.patchlistchecks.empty {
> +	padding: 4px;
> +}
> +
>  .checks .state {
>  	font-weight: bold;
>  	color: #ddd;
> diff --git a/patchwork/templatetags/patch.py
> b/patchwork/templatetags/patch.py index 5d387a4..c57a642 100644
> --- a/patchwork/templatetags/patch.py
> +++ b/patchwork/templatetags/patch.py
> @@ -36,9 +36,33 @@ def patch_checks(patch):
>      titles = ['Success', 'Warning', 'Fail']
>      counts = patch.check_count
> 
> +    check_color = {Check.STATE_SUCCESS: "success",
> +            Check.STATE_WARNING: "warning",
> +            Check.STATE_FAIL: "fail"}
> +
> +    check_elements = []
> +    if any(counts[state] for state in required):
> +        for state in required:
> +            if counts[state] > 0 and (state == Check.STATE_FAIL or \
> +                    (state == Check.STATE_WARNING and counts[Check.STATE_FAIL]
> == 0) or \
> +                    (state == Check.STATE_SUCCESS and
> counts[Check.STATE_WARNING] == 0 and \
> +                    counts[Check.STATE_FAIL] == 0)):
> +                check_elements.append('<span class=\"patchlistchecks
> {}\">{}</span>'.format( \
> +                        check_color[state],
> +                        str(counts[state])))
> +            else:
> +                if state == Check.STATE_SUCCESS:
> +                    check_elements.append('<span
> class=\"patchlistchecks\">{}</span>'.format( \
> +                            str(counts[state])))
> +                else:
> +                    check_elements.append('<span class=\"patchlistchecks\">-
> </span>')
> +    else:
> +        check_elements = ['<span class=\"patchlistchecks empty\">-
> </span>'.format(str(counts[state])) \
> +                for state in required]
> +
>      return mark_safe('<span title="%s">%s</span>' % (
>          ' / '.join(titles),
> -        ' '.join([str(counts[state]) for state in required])))
> +        ''.join(check_elements)))
> 
> 
>  @register.filter
> --
> 2.11.0
> 
> _______________________________________________
> Patchwork mailing list
> Patchwork@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/patchwork
Stephen Finucane Feb. 25, 2019, 11:13 a.m. UTC | #2
On Tue, 2019-01-08 at 12:38 +0000, Ali Alnubani wrote:
> This patch [1] adds colors to the checks in the patch list view.
> The colors are set based on the check's priority, with FAILURE
> having the highest priority, followed by WARNING, and then SUCCESS.
> Only the check with the highest priority and non-zero count
> will be colored. This is to make failures and warnings more visible.
> 
> The patch also [2] replaces zero counts with a '-' for
> FAILUREs and WARNINGs.
> The SUCCESS count will only be replaced by a '-'
> when all other checks have zero counts too.

I made some changes to this to simplify things then applied it. Thanks
again.

Stephen

> Suggested-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: Ali Alnubani <alialnu@mellanox.com>

Patch
diff mbox series

diff --git a/htdocs/css/style.css b/htdocs/css/style.css
index 6b2a80a..1c95174 100644
--- a/htdocs/css/style.css
+++ b/htdocs/css/style.css
@@ -240,6 +240,27 @@  table.patchmeta tr th, table.patchmeta tr td {
 	text-decoration: underline;
 }
 
+.patchlistchecks {
+	border-radius: 7px;
+	padding: 3px;
+}
+
+.patchlistchecks.success {
+	background-color: #82ca9d;
+}
+
+.patchlistchecks.warning {
+	background-color: #ffc95e;
+}
+
+.patchlistchecks.fail {
+	background-color: #ff5555;
+}
+
+.patchlistchecks.empty {
+	padding: 4px;
+}
+
 .checks .state {
 	font-weight: bold;
 	color: #ddd;
diff --git a/patchwork/templatetags/patch.py b/patchwork/templatetags/patch.py
index 5d387a4..c57a642 100644
--- a/patchwork/templatetags/patch.py
+++ b/patchwork/templatetags/patch.py
@@ -36,9 +36,33 @@  def patch_checks(patch):
     titles = ['Success', 'Warning', 'Fail']
     counts = patch.check_count
 
+    check_color = {Check.STATE_SUCCESS: "success",
+            Check.STATE_WARNING: "warning",
+            Check.STATE_FAIL: "fail"}
+
+    check_elements = []
+    if any(counts[state] for state in required):
+        for state in required:
+            if counts[state] > 0 and (state == Check.STATE_FAIL or \
+                    (state == Check.STATE_WARNING and counts[Check.STATE_FAIL] == 0) or \
+                    (state == Check.STATE_SUCCESS and counts[Check.STATE_WARNING] == 0 and \
+                    counts[Check.STATE_FAIL] == 0)):
+                check_elements.append('<span class=\"patchlistchecks {}\">{}</span>'.format( \
+                        check_color[state],
+                        str(counts[state])))
+            else:
+                if state == Check.STATE_SUCCESS:
+                    check_elements.append('<span class=\"patchlistchecks\">{}</span>'.format( \
+                            str(counts[state])))
+                else:
+                    check_elements.append('<span class=\"patchlistchecks\">-</span>')
+    else:
+        check_elements = ['<span class=\"patchlistchecks empty\">-</span>'.format(str(counts[state])) \
+                for state in required]
+
     return mark_safe('<span title="%s">%s</span>' % (
         ' / '.join(titles),
-        ' '.join([str(counts[state]) for state in required])))
+        ''.join(check_elements)))
 
 
 @register.filter