From 8274db514fe2bbaeba61b2467c02b739c322d9c2 Mon Sep 17 00:00:00 2001 From: Jamie McClymont Date: Mon, 15 Apr 2019 02:19:48 +1200 Subject: [PATCH] Group adjacent ranges of component refs in the BOM table --- InteractiveHtmlBom/web/ibom.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/InteractiveHtmlBom/web/ibom.js b/InteractiveHtmlBom/web/ibom.js index 191a4728..ad538c00 100644 --- a/InteractiveHtmlBom/web/ibom.js +++ b/InteractiveHtmlBom/web/ibom.js @@ -390,7 +390,28 @@ function populateBomBody() { } // References td = document.createElement("TD"); - td.innerHTML = highlightFilter(references.map(r => r[0]).join(", ")); + var groupedRefs = []; + references.map(r => { + var match = r[0].match(/^(.*?)([0-9]+)$/); + + if (match) { + return [match[1], parseInt(match[2]), r[0]]; + } else { + return [r[0], NaN, r[0]]; + } + }).forEach(([prefix, num, r]) => { + if (groupedRefs.length > 0) { + var last = groupedRefs[groupedRefs.length-1]; + if (last[0] === prefix && last[1] === num-1) { + last[1] = num; + last[3] = r; + return; + } + } + groupedRefs.push([prefix, num, r, r]); + }); + + td.innerHTML = highlightFilter(groupedRefs.map(([prefix, num, r1, r2]) => (r1 === r2 ? r1 : r1+"-"+r2)).join(", ")); tr.appendChild(td); // Extra fields for (var i in config.extra_fields) {