@@ -150,18 +150,25 @@ function setBomCheckboxState(checkbox, element, references) {
150
150
}
151
151
152
152
function createCheckboxChangeHandler ( checkbox , references ) {
153
- return function ( ) {
153
+ return function ( evt ) {
154
154
refsSet = getStoredCheckboxRefs ( checkbox ) ;
155
+ var darkenWhenChecked = settings . darkenWhenChecked == checkbox ;
155
156
if ( this . checked ) {
156
157
// checkbox ticked
157
158
for ( var ref of references ) {
158
159
refsSet . add ( ref [ 1 ] ) ;
159
160
}
161
+ if ( darkenWhenChecked ) {
162
+ evt . target . parentElement . parentElement . classList . add ( "checked" ) ;
163
+ }
160
164
} else {
161
165
// checkbox unticked
162
166
for ( var ref of references ) {
163
167
refsSet . delete ( ref [ 1 ] ) ;
164
168
}
169
+ if ( darkenWhenChecked ) {
170
+ evt . target . parentElement . parentElement . classList . remove ( "checked" ) ;
171
+ }
165
172
}
166
173
settings . checkboxStoredRefs [ checkbox ] = [ ...refsSet ] . join ( "," ) ;
167
174
writeStorage ( "checkbox_" + checkbox , settings . checkboxStoredRefs [ checkbox ] ) ;
@@ -469,6 +476,9 @@ function populateBomBody() {
469
476
input . type = "checkbox" ;
470
477
input . onchange = createCheckboxChangeHandler ( checkbox , references ) ;
471
478
setBomCheckboxState ( checkbox , input , references ) ;
479
+ if ( input . checked && settings . darkenWhenChecked == checkbox ) {
480
+ tr . classList . add ( "checked" ) ;
481
+ }
472
482
td . appendChild ( input ) ;
473
483
tr . appendChild ( td ) ;
474
484
}
@@ -813,6 +823,13 @@ function setBomCheckboxes(value) {
813
823
settings . checkboxes = value . split ( "," ) . filter ( ( e ) => e ) ;
814
824
prepCheckboxes ( ) ;
815
825
populateBomTable ( ) ;
826
+ populateDarkenWhenCheckedOptions ( ) ;
827
+ }
828
+
829
+ function setDarkenWhenChecked ( value ) {
830
+ writeStorage ( "darkenWhenChecked" , value ) ;
831
+ settings . darkenWhenChecked = value ;
832
+ populateBomTable ( ) ;
816
833
}
817
834
818
835
function prepCheckboxes ( ) {
@@ -844,6 +861,49 @@ function prepCheckboxes() {
844
861
}
845
862
}
846
863
864
+ function populateDarkenWhenCheckedOptions ( ) {
865
+ var container = document . getElementById ( "darkenWhenCheckedContainer" ) ;
866
+
867
+ if ( settings . checkboxes . length == 0 ) {
868
+ container . parentElement . style . display = "none" ;
869
+ return ;
870
+ }
871
+
872
+ container . innerHTML = '' ;
873
+ container . parentElement . style . display = "inline-block" ;
874
+
875
+ function createOption ( name , displayName ) {
876
+ var id = "darkenWhenChecked-" + name ;
877
+
878
+ var div = document . createElement ( "div" ) ;
879
+ div . classList . add ( "radio-container" ) ;
880
+
881
+ var input = document . createElement ( "input" ) ;
882
+ input . type = "radio" ;
883
+ input . name = "darkenWhenChecked" ;
884
+ input . value = name ;
885
+ input . id = id ;
886
+ input . onchange = ( ) => setDarkenWhenChecked ( name ) ;
887
+ div . appendChild ( input ) ;
888
+
889
+ // Preserve the selected element when the checkboxes change
890
+ if ( name == settings . darkenWhenChecked ) {
891
+ input . checked = true ;
892
+ }
893
+
894
+ var label = document . createElement ( "label" ) ;
895
+ label . innerHTML = displayName ;
896
+ label . htmlFor = id ;
897
+ div . appendChild ( label ) ;
898
+
899
+ container . appendChild ( div ) ;
900
+ }
901
+ createOption ( "" , "None" ) ;
902
+ for ( var checkbox of settings . checkboxes ) {
903
+ createOption ( checkbox , checkbox ) ;
904
+ }
905
+ }
906
+
847
907
function updateCheckboxStats ( checkbox ) {
848
908
var checked = getStoredCheckboxRefs ( checkbox ) . size ;
849
909
var total = pcbdata . modules . length - pcbdata . bom . skipped . length ;
0 commit comments