This is an automated email from the ASF dual-hosted git repository.

sbp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-release.git


The following commit(s) were added to refs/heads/main by this push:
     new 6be19b3  Allow member check results to be filtered by path
6be19b3 is described below

commit 6be19b3f9dd93dde5366bae6838930a64ad8fbf8
Author: Sean B. Palmer <[email protected]>
AuthorDate: Thu May 22 18:55:03 2025 +0100

    Allow member check results to be filtered by path
---
 atr/templates/report-selected-path.html | 63 ++++++++++++++++++++++++++++++---
 1 file changed, 58 insertions(+), 5 deletions(-)

diff --git a/atr/templates/report-selected-path.html 
b/atr/templates/report-selected-path.html
index 78fbeeb..22b346d 100644
--- a/atr/templates/report-selected-path.html
+++ b/atr/templates/report-selected-path.html
@@ -8,6 +8,19 @@
   Show the report for the {{ release.short_display_name }} {{ package.filename 
}} candidate draft file.
 {% endblock description %}
 
+{% block stylesheets %}
+  {{ super() }}
+  <style>
+      .page-member-path-hide {
+          display: none !important;
+      }
+
+      .page-member-visible-odd {
+          background-color: rgba(0, 0, 0, 0.05);
+      }
+  </style>
+{% endblock stylesheets %}
+
 {% block content %}
   {% set phase = release.phase.value %}
   <p class="d-flex justify-content-between align-items-center">
@@ -108,7 +121,7 @@
           {% for primary_result in primary_results %}
             <tr class="atr-result-primary atr-result-status-{{ 
primary_result.status.value }} {% if primary_result.status.value == 'success' 
and not all_primary_are_success %}atr-hide{% endif %}">
               <th scope="row" class="align-middle fw-bold">{{ 
function_name_from_key(primary_result.checker) }}</th>
-              <td class="align-middle">
+              <td class="align-middle text-break">
                 {% if primary_result.data is mapping and 
primary_result.data.keys()|length > 0 %}
                   <details class="bg-light rounded">
                     <summary class="atr-cursor-pointer user-select-none p-2">
@@ -234,7 +247,7 @@
       {% endfor %}
       {% if member_status_counts.success > 0 or member_status_counts.failure > 
0 or member_status_counts.warning > 0 or member_status_counts.exception > 0 %}
         {% set all_member_are_success = member_status_counts.failure == 0 and 
member_status_counts.warning == 0 and member_status_counts.exception == 0 %}
-        <div class="d-flex flex-wrap gap-2 mb-3">
+        <div class="d-flex flex-wrap gap-2 mb-3 align-items-center">
           {% for status, count in member_status_counts.items() %}
             {% if count > 0 %}
               {% set bs_status = 'danger' if status == 'exception' or status 
== 'failure' else status %}
@@ -253,10 +266,15 @@
               </button>
             {% endif %}
           {% endfor %}
+          <input type="text"
+                 id="member-path-filter"
+                 class="form-control form-control-sm ms-auto w-20"
+                 placeholder="Filter paths..."
+                 aria-label="Filter member paths" />
         </div>
       {% endif %}
 
-      <table class="table table-bordered table-striped border mb-3">
+      <table class="table table-bordered border mb-3">
         <thead class="table-light">
           <tr>
             <th scope="col" class="w-30">Path</th>
@@ -268,10 +286,12 @@
         <tbody>
           {% for member_rel_path, member_results_list in 
member_results.items() %}
             {% for member_result in member_results_list %}
-              <tr class="atr-result-member atr-result-status-{{ 
member_result.status.value }} {% if member_result.status.value == 'success' and 
not all_member_are_success %}atr-hide{% endif %}">
+              {# The striping class here is now technically redundant because 
of the JS striping #}
+              {# But we leave it here for clean initial page rendering #}
+              <tr class="atr-result-member atr-result-status-{{ 
member_result.status.value }} {% if member_result.status.value == 'success' and 
not all_member_are_success %}atr-hide{% endif %} {% if loop.index is odd 
%}page-member-visible-odd{% endif %} ">
                 <td class="align-middle">{{ member_rel_path }}</td>
                 <th scope="row" class="align-middle fw-bold">{{ 
function_name_from_key(member_result.checker) }}</th>
-                <td class="align-middle">
+                <td class="align-middle text-break">
                   {% if member_result.message %}{{ member_result.message }}{% 
endif %}
                 </td>
                 <td class="align-middle text-center atr-sans">
@@ -341,7 +361,40 @@
               btn.classList.remove(`btn-${bsSt}`);
               btn.classList.add(`btn-outline-${bsSt}`);
           }
+          if (type === "member") {
+              updateMemberStriping();
+          }
+      }
+
+      function updateMemberStriping() {
+          let visibleIdx = 0;
+          document.querySelectorAll(".atr-result-member").forEach(r => {
+              r.classList.remove("page-member-visible-odd");
+              if (!r.classList.contains("atr-hide") && 
!r.classList.contains("page-member-path-hide")) {
+                  if (visibleIdx % 2 === 0) 
r.classList.add("page-member-visible-odd");
+                  visibleIdx++;
+              }
+          });
+      }
+
+      const mpfInput = document.getElementById("member-path-filter");
+      if (mpfInput) {
+          mpfInput.addEventListener("input", function() {
+              const filterText = this.value.toLowerCase();
+              document.querySelectorAll(".atr-result-member").forEach(row => {
+                  const pathCell = row.cells[0];
+                  let hide = false;
+                  if (filterText) {
+                      if 
(!pathCell.textContent.toLowerCase().includes(filterText)) {
+                          hide = true;
+                      }
+                  }
+                  row.classList.toggle("page-member-path-hide", hide);
+              });
+              updateMemberStriping();
+          });
       }
+      updateMemberStriping();
   </script>
 {% endblock javascripts %}
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to