@@ -106,30 +106,39 @@ coverage.wire_up_filter = function () {
106
106
const no_rows = document . getElementById ( "no_rows" ) ;
107
107
108
108
// Observe filter keyevents.
109
- document . getElementById ( "filter" ) . addEventListener ( "input" , debounce ( event => {
109
+ const filter_handler = ( event => {
110
110
// Keep running total of each metric, first index contains number of shown rows
111
111
const totals = new Array ( table . rows [ 0 ] . cells . length ) . fill ( 0 ) ;
112
112
// Accumulate the percentage as fraction
113
113
totals [ totals . length - 1 ] = { "numer" : 0 , "denom" : 0 } ; // nosemgrep: eslint.detect-object-injection
114
114
115
+ var text = document . getElementById ( "filter" ) . value ;
116
+ const casefold = ( text === text . toLowerCase ( ) ) ;
117
+ const hide100 = document . getElementById ( "hide100" ) . checked ;
118
+
115
119
// Hide / show elements.
116
120
table_body_rows . forEach ( row => {
117
121
var show = false ;
118
- var target = event . target . value ;
119
- var casefold = ( target === target . toLowerCase ( ) ) ;
122
+ // Check the text filter.
120
123
for ( let column = 0 ; column < totals . length ; column ++ ) {
121
124
cell = row . cells [ column ] ;
122
125
if ( cell . classList . contains ( "name" ) ) {
123
126
var celltext = cell . textContent ;
124
127
if ( casefold ) {
125
128
celltext = celltext . toLowerCase ( ) ;
126
129
}
127
- if ( celltext . includes ( target ) ) {
130
+ if ( celltext . includes ( text ) ) {
128
131
show = true ;
129
132
}
130
133
}
131
134
}
132
135
136
+ // Check the "hide covered" filter.
137
+ if ( show && hide100 ) {
138
+ const [ numer , denom ] = row . cells [ row . cells . length - 1 ] . dataset . ratio . split ( " " ) ;
139
+ show = ( numer !== denom ) ;
140
+ }
141
+
133
142
if ( ! show ) {
134
143
// hide
135
144
row . classList . add ( "hidden" ) ;
@@ -196,11 +205,15 @@ coverage.wire_up_filter = function () {
196
205
cell . textContent = totals [ column ] ; // nosemgrep: eslint.detect-object-injection
197
206
}
198
207
}
199
- } ) ) ;
208
+ } ) ;
209
+
210
+ document . getElementById ( "filter" ) . addEventListener ( "input" , debounce ( filter_handler ) ) ;
211
+ document . getElementById ( "hide100" ) . addEventListener ( "input" , debounce ( filter_handler ) ) ;
200
212
201
213
// Trigger change event on setup, to force filter on page refresh
202
214
// (filter value may still be present).
203
215
document . getElementById ( "filter" ) . dispatchEvent ( new Event ( "input" ) ) ;
216
+ document . getElementById ( "hide100" ) . dispatchEvent ( new Event ( "input" ) ) ;
204
217
} ;
205
218
206
219
// Set up the click-to-sort columns.
0 commit comments