@@ -5,6 +5,37 @@ const updateMenuPositionForSubMenu = (currentMenuSupplier) => {
5
5
subMenu ?. style . setProperty ( '--menu-x' , `${ currentMenu . getBoundingClientRect ( ) . x } px` ) ;
6
6
}
7
7
8
+ let loadReleases = function ( ) {
9
+ const crate_name = window . location . pathname . split ( '/' ) [ 1 ] ;
10
+ const xhttp = new XMLHttpRequest ( ) ;
11
+ xhttp . onreadystatechange = function ( ) {
12
+ if ( xhttp . readyState !== XMLHttpRequest . DONE ) {
13
+ return ;
14
+ }
15
+ if ( xhttp . status === 200 ) {
16
+ const data = JSON . parse ( xhttp . responseText ) ;
17
+ const currentPath = window . location . pathname . split ( '/' ) ;
18
+ const releases = [ ] ;
19
+ for ( const release of data ) {
20
+ currentPath [ 2 ] = release . version ;
21
+ releases . push ( `\
22
+ <li class="pure-menu-item">
23
+ <a href="${ currentPath . join ( '/' ) } " rel="nofollow" class="pure-menu-link">${ release [ "version" ] } </a>
24
+ </li>` ) ;
25
+ }
26
+ document . getElementById ( 'releases-list' ) . innerHTML = `\
27
+ <ul class="pure-menu-list">${ releases . join ( '' ) } </ul>` ;
28
+ } else {
29
+ console . error ( `Failed to load release list: [${ xhttp . status } ] ${ xhttp . responseText } ` ) ;
30
+ document . getElementById ( 'releases-list' ) . innerHTML = "Failed to load release list" ;
31
+ }
32
+ } ;
33
+ xhttp . open ( "GET" , `/${ crate_name } /releases` , true ) ;
34
+ xhttp . send ( ) ;
35
+ // To prevent reloading the list unnecessarily.
36
+ loadReleases = function ( ) { } ;
37
+ } ;
38
+
8
39
// Allow menus to be open and used by keyboard.
9
40
( function ( ) {
10
41
var currentMenu ;
@@ -53,6 +84,7 @@ const updateMenuPositionForSubMenu = (currentMenuSupplier) => {
53
84
currentMenu = newMenu ;
54
85
newMenu . className += " pure-menu-active" ;
55
86
backdrop . style . display = "block" ;
87
+ loadReleases ( ) ;
56
88
}
57
89
function menuOnClick ( e ) {
58
90
if ( this . getAttribute ( "href" ) != "#" ) {
0 commit comments