@@ -262,10 +262,6 @@ function toggleExpansion(expand) {
262
262
) ;
263
263
}
264
264
265
- function clearVersionFilters ( ) {
266
- onEachLazy ( document . querySelectorAll ( "#version-filter-count input" ) , el => el . value = "" ) ;
267
- }
268
-
269
265
const GROUPS_FILTER_DEFAULT = {
270
266
cargo : true ,
271
267
complexity : true ,
@@ -307,11 +303,16 @@ window.filters = {
307
303
filters . allLints = Array . prototype . slice . call (
308
304
document . getElementsByTagName ( "article" ) ,
309
305
) . map ( elem => {
306
+ let version = elem . querySelector ( ".label-version" ) . innerText ;
307
+ // Strip the "pre " prefix for pre 1.29.0 lints
308
+ if ( version . startsWith ( "pre " ) ) {
309
+ version = version . slice ( 4 ) ;
310
+ }
310
311
return {
311
312
elem : elem ,
312
313
group : elem . querySelector ( ".label-lint-group" ) . innerText ,
313
314
level : elem . querySelector ( ".label-lint-level" ) . innerText ,
314
- version : elem . querySelector ( ".label-version" ) . innerText ,
315
+ version : parseInt ( version . split ( "." ) [ 1 ] ) ,
315
316
applicability : elem . querySelector ( ".label-applicability" ) . innerText ,
316
317
filteredOut : false ,
317
318
searchFilteredOut : false ,
@@ -324,7 +325,11 @@ window.filters = {
324
325
for ( const lint of filters . getAllLints ( ) ) {
325
326
lint . filteredOut = ( ! filters . groups_filter [ lint . group ]
326
327
|| ! filters . levels_filter [ lint . level ]
327
- || ! filters . applicabilities_filter [ lint . applicability ] ) ;
328
+ || ! filters . applicabilities_filter [ lint . applicability ]
329
+ || ! ( filters . version_filter [ "=" ] === null || lint . version === filters . version_filter [ "=" ] )
330
+ || ! ( filters . version_filter [ "≥" ] === null || lint . version > filters . version_filter [ "≥" ] )
331
+ || ! ( filters . version_filter [ "≤" ] === null || lint . version < filters . version_filter [ "≤" ] )
332
+ ) ;
328
333
if ( lint . filteredOut || lint . searchFilteredOut ) {
329
334
lint . elem . style . display = "none" ;
330
335
} else {
@@ -344,6 +349,38 @@ function updateFilter(elem, filter) {
344
349
}
345
350
}
346
351
352
+ function updateVersionFilters ( elem , comparisonKind ) {
353
+ let value = elem . value . trim ( ) ;
354
+ if ( value . length === 0 ) {
355
+ value = null ;
356
+ } else if ( / ^ \d + $ / . test ( value ) ) {
357
+ value = parseInt ( value ) ;
358
+ } else {
359
+ console . error ( `Failed to get version number from "${ value } "` ) ;
360
+ return ;
361
+ }
362
+ if ( filters . version_filter [ comparisonKind ] !== value ) {
363
+ filters . version_filter [ comparisonKind ] = value ;
364
+ filters . filterLints ( ) ;
365
+ }
366
+ }
367
+
368
+ function clearVersionFilters ( ) {
369
+ let needsUpdate = false ;
370
+
371
+ onEachLazy ( document . querySelectorAll ( "#version-filter input" ) , el => {
372
+ el . value = "" ;
373
+ const comparisonKind = el . getAttribute ( "data-value" ) ;
374
+ if ( filters . version_filter [ comparisonKind ] !== null ) {
375
+ needsUpdate = true ;
376
+ filters . version_filter [ comparisonKind ] = null ;
377
+ }
378
+ } ) ;
379
+ if ( needsUpdate ) {
380
+ filters . filterLints ( ) ;
381
+ }
382
+ }
383
+
347
384
function resetGroupsToDefault ( ) {
348
385
let needsUpdate = false ;
349
386
@@ -414,10 +451,15 @@ function generateSettings() {
414
451
<span>1.</span> \
415
452
<input type="number" \
416
453
min="29" \
417
- id="filter-${ kind } " \
418
454
class="version-filter-input form-control filter-input" \
419
455
maxlength="2" \
420
- onchange="updateVersionFilters()" />\
456
+ data-value="${ kind } " \
457
+ onchange="updateVersionFilters(this, '${ kind } ')" \
458
+ oninput="updateVersionFilters(this, '${ kind } ')" \
459
+ onkeydown="updateVersionFilters(this, '${ kind } ')" \
460
+ onkeyup="updateVersionFilters(this, '${ kind } ')" \
461
+ onpaste="updateVersionFilters(this, '${ kind } ')" \
462
+ />
421
463
<span>.0</span>\
422
464
</li>` ;
423
465
}
0 commit comments