Skip to content

Commit b79f6b7

Browse files
committed
Add reference lookup field
Fixes #4
1 parent ffd215b commit b79f6b7

File tree

1 file changed

+46
-13
lines changed

1 file changed

+46
-13
lines changed

InteractiveHtmlBom/ibom.html

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,12 @@
188188
height: 5px;
189189
}
190190

191-
.filter {
191+
.searchbox {
192192
float: left;
193-
width: calc(100% - 10px);
194193
height: 40px;
195194
margin: 10px 5px;
196195
padding: 12px 32px;
197-
font-family: "Lucida Console", Monaco, monospace;
196+
font-family: Consolas, "DejaVu Sans Mono", monospace;
198197
font-size: 18px;
199198
box-sizing: border-box;
200199
border: 1px solid #888;
@@ -207,10 +206,18 @@
207206
background-repeat: no-repeat;
208207
}
209208

210-
.filter::placeholder {
209+
.searchbox::placeholder {
211210
color: #ccc;
212211
}
213212

213+
.filter {
214+
width: calc(60% - 10px);
215+
}
216+
217+
.reflookup {
218+
width: calc(40% - 10px);
219+
}
220+
214221
input[type=text]:focus {
215222
background-color: white;
216223
border: 1px solid #333;
@@ -581,6 +588,15 @@
581588
return false;
582589
}
583590

591+
function findRefInEntry(entry) {
592+
for (ref of entry[3]) {
593+
if (ref.toLowerCase() == reflookup) {
594+
return [ref];
595+
}
596+
}
597+
return false;
598+
}
599+
584600
function highlightFilter(s) {
585601
if (!filter) {
586602
return s;
@@ -604,12 +620,12 @@
604620
return r;
605621
}
606622

607-
function populateBomTable(layout) {
623+
function populateBomTable() {
608624
while (bom.firstChild) {
609625
bom.removeChild(bom.firstChild);
610626
}
611627
var first = true;
612-
switch (layout) {
628+
switch (canvaslayout) {
613629
case 'F':
614630
bomtable = pcbdata.bom.F;
615631
break;
@@ -625,6 +641,13 @@
625641
if (filter && !entryMatches(bomentry)) {
626642
continue;
627643
}
644+
references = bomentry[3];
645+
if (reflookup) {
646+
references = findRefInEntry(bomentry);
647+
if (!references) {
648+
continue;
649+
}
650+
}
628651
var tr = document.createElement("TR");
629652
var td = document.createElement("TD");
630653
var rownum = +i + 1;
@@ -639,7 +662,7 @@
639662
tr.appendChild(td);
640663
// References
641664
td = document.createElement("TD");
642-
td.innerHTML = highlightFilter(bomentry[3].join(", "));
665+
td.innerHTML = highlightFilter(references.join(", "));
643666
tr.appendChild(td);
644667
// Value
645668
td = document.createElement("TD");
@@ -654,17 +677,22 @@
654677
td.textContent = bomentry[3].length;
655678
tr.appendChild(td);
656679
bom.appendChild(tr);
657-
tr.onmouseenter = createRowMouseEnterHandler(bomentry[3]);
658-
if (filter && first) {
659-
drawHighlights(bomentry[3]);
680+
tr.onmouseenter = createRowMouseEnterHandler(references);
681+
if ((filter || reflookup) && first) {
682+
drawHighlights(references);
660683
first = false;
661684
}
662685
}
663686
}
664687

665688
function updateFilter(input) {
666689
filter = input.toLowerCase();
667-
populateBomTable(canvaslayout);
690+
populateBomTable();
691+
}
692+
693+
function updateRefLookup(input) {
694+
reflookup = input.toLowerCase();
695+
populateBomTable();
668696
}
669697

670698
function silkscreenVisible(visible) {
@@ -817,6 +845,7 @@
817845
bomlayout = "none";
818846
canvaslayout = "FB";
819847
filter = "";
848+
reflookup = "";
820849
populateMetadata();
821850
resizeCanvas();
822851
changeBomLayout('LR');
@@ -883,8 +912,12 @@
883912
</div>
884913
<div id="bot" class="split" style="height: calc(100% - 80px)">
885914
<div id="bomdiv" class="split split-horizontal">
886-
<input class="filter hideonprint" type="text" placeholder="Filter"
887-
oninput="updateFilter(this.value)">
915+
<div style="width: 100%">
916+
<input class="searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
917+
oninput="updateRefLookup(this.value)">
918+
<input class="searchbox filter hideonprint" type="text" placeholder="Filter"
919+
oninput="updateFilter(this.value)">
920+
</div>
888921
<div id="dbg"></div>
889922
<table class="bom">
890923
<thead>

0 commit comments

Comments
 (0)