@@ -7,6 +7,7 @@ var canvassplit;
77var canvaslayout = "default" ;
88var bomlayout = "default" ;
99var highlightedRefs = [ ] ;
10+ var bomCheckboxes = "" ;
1011
1112function readStorage ( key ) {
1213 return window . localStorage . getItem ( storagePrefix + '#' + key ) ;
@@ -81,6 +82,41 @@ function populateBomTable() {
8182 while ( bom . firstChild ) {
8283 bom . removeChild ( bom . firstChild ) ;
8384 }
85+ while ( bomhead . firstChild ) {
86+ bomhead . removeChild ( bomhead . firstChild ) ;
87+ }
88+ // Populate header
89+ var tr = document . createElement ( "TR" ) ;
90+ var td = document . createElement ( "TH" ) ;
91+ td . classList . add ( "numCol" ) ;
92+ tr . appendChild ( td ) ;
93+ checkboxes = bomCheckboxes . split ( "," ) ;
94+ for ( checkbox of checkboxes ) {
95+ if ( checkbox ) {
96+ td = document . createElement ( "TH" ) ;
97+ td . classList . add ( "bom-checkbox" ) ;
98+ td . innerHTML = checkbox ;
99+ tr . appendChild ( td ) ;
100+ }
101+ }
102+ td = document . createElement ( "TH" ) ;
103+ td . classList . add ( "References" ) ;
104+ td . innerHTML = "References" ;
105+ tr . appendChild ( td ) ;
106+ td = document . createElement ( "TH" ) ;
107+ td . classList . add ( "Value" ) ;
108+ td . innerHTML = "Value" ;
109+ tr . appendChild ( td ) ;
110+ td = document . createElement ( "TH" ) ;
111+ td . classList . add ( "Footprint" ) ;
112+ td . innerHTML = "Footprint" ;
113+ tr . appendChild ( td ) ;
114+ td = document . createElement ( "TH" ) ;
115+ td . classList . add ( "Quantity" ) ;
116+ td . innerHTML = "Quantity" ;
117+ tr . appendChild ( td ) ;
118+ bomhead . appendChild ( tr ) ;
119+ // Populate table body
84120 var first = true ;
85121 switch ( canvaslayout ) {
86122 case 'F' :
@@ -111,6 +147,16 @@ function populateBomTable() {
111147 tr . id = "bomrow" + rownum ;
112148 td . textContent = rownum ;
113149 tr . appendChild ( td ) ;
150+ // Checkboxes
151+ for ( checkbox of checkboxes ) {
152+ if ( checkbox ) {
153+ td = document . createElement ( "TD" ) ;
154+ input = document . createElement ( "input" ) ;
155+ input . type = "checkbox" ;
156+ td . appendChild ( input ) ;
157+ tr . appendChild ( td ) ;
158+ }
159+ }
114160 // References
115161 td = document . createElement ( "TD" ) ;
116162 td . innerHTML = highlightFilter ( references . join ( ", " ) ) ;
@@ -185,7 +231,7 @@ function changeCanvasLayout(layout) {
185231 canvaslayout = layout ;
186232 writeStorage ( "canvaslayout" , layout ) ;
187233 resizeAll ( ) ;
188- populateBomTable ( layout ) ;
234+ populateBomTable ( ) ;
189235}
190236
191237function populateMetadata ( ) {
@@ -289,11 +335,18 @@ function cleanGutters() {
289335 removeGutterNode ( document . getElementById ( "canvasdiv" ) ) ;
290336}
291337
338+ function setBomCheckboxes ( value ) {
339+ bomCheckboxes = value ;
340+ writeStorage ( "bomCheckboxes" , value ) ;
341+ populateBomTable ( ) ;
342+ }
343+
292344window . onload = function ( e ) {
293345 cleanGutters ( ) ;
294346 initRender ( ) ;
295347 dbgdiv = document . getElementById ( "dbg" ) ;
296348 bom = document . getElementById ( "bombody" ) ;
349+ bomhead = document . getElementById ( "bomhead" ) ;
297350 bomlayout = readStorage ( "bomlayout" ) ;
298351 if ( ! bomlayout ) {
299352 bomlayout = "LR" ;
@@ -305,6 +358,11 @@ window.onload = function(e) {
305358 filter = "" ;
306359 reflookup = "" ;
307360 populateMetadata ( ) ;
361+ bomCheckboxes = readStorage ( "bomCheckboxes" ) ;
362+ if ( bomCheckboxes === null ) {
363+ bomCheckboxes = "Sourced,Placed" ;
364+ }
365+ document . getElementById ( "bomCheckboxes" ) . value = bomCheckboxes ;
308366 changeBomLayout ( bomlayout ) ;
309367 if ( readStorage ( "silkscreenVisible" ) === "false" ) {
310368 document . getElementById ( "silkscreenCheckbox" ) . checked = false ;
0 commit comments