@@ -158,6 +158,9 @@ $(function () {
158158 var storage = window [ 'localStorage' ] ;
159159 var packageManagerStorageKey = 'preferred_package_manager' ;
160160 var bodyStorageKey = 'preferred_body_tab' ;
161+ var versionFilterPrereleaseKey = 'version_filter_include_prerelease' ;
162+ var versionFilterVulnerableKey = 'version_filter_include_vulnerable' ;
163+ var versionFilterDeprecatedKey = 'version_filter_include_deprecated' ;
161164 var restorePreferredBodyTab = true ;
162165
163166 var windowHash = window . location . hash ;
@@ -190,6 +193,79 @@ $(function () {
190193 }
191194 }
192195
196+ function applyVersionFilters ( ) {
197+ var includePrerelease = $ ( '#include-prerelease' ) . is ( ':checked' ) ;
198+ var includeVulnerable = $ ( '#include-vulnerable' ) . is ( ':checked' ) ;
199+ var includeDeprecated = $ ( '#include-deprecated' ) . is ( ':checked' ) ;
200+
201+ if ( storage ) {
202+ storage . setItem ( versionFilterPrereleaseKey , includePrerelease ) ;
203+ storage . setItem ( versionFilterVulnerableKey , includeVulnerable ) ;
204+ storage . setItem ( versionFilterDeprecatedKey , includeDeprecated ) ;
205+ }
206+
207+ $ ( '.version-row' ) . each ( function ( ) {
208+ var isCurrent = $ ( this ) . hasClass ( 'bg-brand-info' ) ;
209+ if ( isCurrent ) {
210+ $ ( this ) . show ( ) ;
211+ return ;
212+ }
213+
214+ var isPrerelease = $ ( this ) . data ( 'prerelease' ) === true ;
215+ var isVulnerable = $ ( this ) . data ( 'vulnerable' ) === true ;
216+ var isDeprecated = $ ( this ) . data ( 'deprecated' ) === true ;
217+ var showRow = true ;
218+
219+ if ( ! includePrerelease && isPrerelease ) {
220+ showRow = false ;
221+ }
222+ if ( ! includeVulnerable && isVulnerable ) {
223+ showRow = false ;
224+ }
225+ if ( ! includeDeprecated && isDeprecated ) {
226+ showRow = false ;
227+ }
228+
229+ if ( showRow ) {
230+ $ ( this ) . show ( ) ;
231+ } else {
232+ $ ( this ) . hide ( ) ;
233+ }
234+ } ) ;
235+ }
236+
237+ if ( storage ) {
238+ var savedIncludePrerelease = storage . getItem ( versionFilterPrereleaseKey ) ;
239+ if ( savedIncludePrerelease !== null ) {
240+ $ ( '#include-prerelease' ) . prop ( 'checked' , savedIncludePrerelease === 'true' ) ;
241+ } else {
242+ $ ( '#include-prerelease' ) . prop ( 'checked' , true ) ;
243+ }
244+
245+ var savedIncludeVulnerable = storage . getItem ( versionFilterVulnerableKey ) ;
246+ if ( savedIncludeVulnerable !== null ) {
247+ $ ( '#include-vulnerable' ) . prop ( 'checked' , savedIncludeVulnerable === 'true' ) ;
248+ } else {
249+ $ ( '#include-vulnerable' ) . prop ( 'checked' , true ) ;
250+ }
251+
252+ var savedIncludeDeprecated = storage . getItem ( versionFilterDeprecatedKey ) ;
253+ if ( savedIncludeDeprecated !== null ) {
254+ $ ( '#include-deprecated' ) . prop ( 'checked' , savedIncludeDeprecated === 'true' ) ;
255+ } else {
256+ $ ( '#include-deprecated' ) . prop ( 'checked' , true ) ;
257+ }
258+ } else {
259+ $ ( '#include-prerelease' ) . prop ( 'checked' , true ) ;
260+ $ ( '#include-vulnerable' ) . prop ( 'checked' , true ) ;
261+ $ ( '#include-deprecated' ) . prop ( 'checked' , true ) ;
262+ }
263+
264+ $ ( '#include-prerelease' ) . change ( applyVersionFilters ) ;
265+ $ ( '#include-vulnerable' ) . change ( applyVersionFilters ) ;
266+ $ ( '#include-deprecated' ) . change ( applyVersionFilters ) ;
267+ applyVersionFilters ( ) ;
268+
193269 var usedByClamped = false ;
194270 var usedByTab = $ ( '#usedby-tab' ) ;
195271
0 commit comments