From 58974a4d04c70638f8af601b066d052ad548dd61 Mon Sep 17 00:00:00 2001 From: Steffen Neumann Date: Thu, 26 Apr 2018 09:54:47 +0200 Subject: [PATCH 1/2] add package name as id to table rows Adds the package name as id attribute to both table rows: header and package summary row(s) for selection in the HTML DOM model. --- BBS-report.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BBS-report.py b/BBS-report.py index 9ae17df2..a0d910cf 100755 --- a/BBS-report.py +++ b/BBS-report.py @@ -413,7 +413,7 @@ def write_pkg_allstatuses_asfullTRs(out, pkg, pkg_pos, nb_pkgs, leafreport_ref): classes = "odd" statuses = BBSreportutils.get_distinct_statuses_from_db(pkg) classes += statuses2classes(statuses) - out.write('' % classes) + out.write('' % (pkg, classes)) out.write('Package %d/%d' % (pkg_pos, nb_pkgs)) out.write('Hostname') out.write('OS / Arch') @@ -426,7 +426,7 @@ def write_pkg_allstatuses_asfullTRs(out, pkg, pkg_pos, nb_pkgs, leafreport_ref): nb_nodes = len(BBSreportutils.NODES) is_first = True for node in BBSreportutils.NODES: - out.write('' % classes) + out.write('' % (pkg, classes)) if is_first: pkgname_html = pkgname_to_HTML(pkg) version = BBSreportutils.get_pkg_field_from_meat_index(pkg, 'Version') From 140ab9448bb59c7d8f7ad1bb5b706934cd69e874 Mon Sep 17 00:00:00 2001 From: Steffen Neumann Date: Thu, 26 Apr 2018 12:44:01 +0200 Subject: [PATCH 2/2] Switch to data-pkg as attribute for package name, add JS to select visibility --- 3.8/report.js | 32 ++++++++++++++++++++++++++++++++ BBS-report.py | 6 ++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/3.8/report.js b/3.8/report.js index 3b45ed83..db1a37e5 100644 --- a/3.8/report.js +++ b/3.8/report.js @@ -138,3 +138,35 @@ function toggle(theClass) { location.hash = "#show=" + on.join(","); } +function setPackagesVisible(){ + var i,j; + + var urlstring = window.location.href + var url = new URL(urlstring); + var pkgstring = url.searchParams.get("packages"); + + // Skip if no packages are selected + if (pkgstring == null || pkgstring == "" || pkgstring == "/") { + return; + } + + // At the beginning of the summary report html is some strange code + // to always add a trailling slash. Remove it from parameter + pkgstring = pkgstring.replace(/\/+$/, ""); + var pkgs = pkgstring.split(","); + + // Hide all packages + var trs = document.querySelectorAll('html>body>table>tbody>tr'); + for (i = 0; i < trs.length; ++i) { + trs[i].style.display = "none"; + } + + // Only show selected ones + for (j in pkgs) { + var pkgselector = "[data-pkg=" + pkgs[j] + "]"; + var trs = document.querySelectorAll(pkgselector); + for (i = 0; i < trs.length; ++i) { + trs[i].style.display = "table-row"; + } + } +} diff --git a/BBS-report.py b/BBS-report.py index a0d910cf..5d898fa7 100755 --- a/BBS-report.py +++ b/BBS-report.py @@ -413,7 +413,7 @@ def write_pkg_allstatuses_asfullTRs(out, pkg, pkg_pos, nb_pkgs, leafreport_ref): classes = "odd" statuses = BBSreportutils.get_distinct_statuses_from_db(pkg) classes += statuses2classes(statuses) - out.write('' % (pkg, classes)) + out.write('' % (classes, pkg)) out.write('Package %d/%d' % (pkg_pos, nb_pkgs)) out.write('Hostname') out.write('OS / Arch') @@ -426,7 +426,7 @@ def write_pkg_allstatuses_asfullTRs(out, pkg, pkg_pos, nb_pkgs, leafreport_ref): nb_nodes = len(BBSreportutils.NODES) is_first = True for node in BBSreportutils.NODES: - out.write('' % (pkg, classes)) + out.write(' data-pkg="%s"' % (classes, pkg)) if is_first: pkgname_html = pkgname_to_HTML(pkg) version = BBSreportutils.get_pkg_field_from_meat_index(pkg, 'Version') @@ -612,6 +612,8 @@ def write_HTML_header(out, page_title=None, css_file=None, js_file=None): out.write('\n') out.write('\n') title = BBSreportutils.report_title