/***** Edit the following with each new release *******/ var releases = [ {"re": /-yyyymmddHHMM\.(tar\.gz|zip)$/, "title": "Snapshot as of 2023-mm-dd HH:MM", "titleurl": "../doc/trunk/www/changes.wiki", "history": "../timeline?p=39bcd310e889538d&bt=version-2.22", "future": "../timeline?df=39bcd310e889538d", "tarball": "xxxx/fossil-src-202310241204.tar.gz", "tarballsz": 6797692}, {"re": /-202409280034\.(tar\.gz|zip)$/, "title": "Snapshot as of 2024-09-28 00:34Z", "titleurl": "../doc/trunk/www/changes.wiki", "history": "../timeline?p=742450caf4bf3b3f&bt=version-2.24", "future": "../timeline?df=742450caf4bf3b3f", "tarball": "742450caf4bf3b3ff0cf150d5e5d7dbdc495c65703b897156b0815778d691ed5.tar.gz", "tarballsz": 7003473}, {"re": /-2\.24\.(tar\.gz|zip)$/, "title": "Version 2.24 (2024-04-23)", "titleurl": "../doc/trunk/www/changes.wiki#v2_24", "history": "../timeline?p=version-2.24&bt=version-2.23", "future": "../timeline?df=version-2.24", "tarball": "8be0372c1051043761320c8ea8669c3cf320c406e5fe18ad36b7be5f844ca73b/fossil-src-2.24.tar.gz", "tarballsz": 6904302}, {"re": /-2\.23\.(tar\.gz|zip)$/, "title": "Version 2.23 (2023-11-01)", "titleurl": "../doc/trunk/www/changes.wiki#v2_23", "history": "../timeline?p=version-2.23&bt=version-2.22", "future": "../timeline?df=version-2.23", "tarball": "47362306a7dd7c6fc3cab77cebe5d25469b0a9448479d9718eb5c49c8337b29/fossil-src-2.23.tar.gz", "tarballsz": 6799177}] /******* Should not need to change anything else ******/ function escHTML(x){ return x.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"); } var r1 = new XMLHttpRequest(); r1.onreadystatechange = function(){ if(r1.readyState!=4) return var jx = JSON.parse(r1.responseText); /* The jx returned will look like this: ** [{"name":NAME, "mtime":MTIME, "hash":HASH, "size":SIZE, "user":USER}] ** ** The sequence[] array describes the columns in the download matrix */ var sequence = [ {"name": "linux", "re": /-linux-/, "icon": "build-icons/linux.gif", "title": "Linux x64" }, {"name": "macarm", "re": /-mac-arm6?4?-/, "icon": "build-icons/mac.gif", "title": "Mac ARM" }, {"name": "macx64", "re": /-mac(-x64|osx)-/, "icon": "build-icons/mac.gif", "title": "Mac x64" }, {"name": "pi", "re": /-pi-/, "icon": "build-icons/pi.gif", "title": "Rasp<wbr>berry<wbr>Pi" }, {"name": "src", "icon": "build-icons/src.gif", "title": "Source Tar<wbr>ball" }, {"name": "win32", "re": /-w32-/, "icon": "build-icons/win32.gif", "title": "Win<wbr>dows<wbr>32" }, {"name": "win64", "re": /-w64-/, "icon": "build-icons/win32.gif", "title": "Win<wbr>dows<wbr>64" }] /* Accumulate HTML for the download matrix in h */ var h = "<table cellpadding='10'>\n" /* Find the hash of each icon, if possible */ var hash = new Array; for(var i=0; i<sequence.length; i++){ hash[sequence[i].icon] = ""; } for(var i=0; i<jx.length; i++){ if( hash[jx[i].name]=="" ){ hash[jx[i].name] = jx[i].hash; } } var top = 1; for(var i=0; i<releases.length; i++){ var cnt = 0; var products = {"dummy":0}; for(var j=0; j<jx.length; j++){ var nm = jx[j].name; if( !releases[i].re.test(nm) ) continue; for(k=0; k<sequence.length; k++){ if( sequence[k].name!="src" && sequence[k].re.test(nm) ){ products[sequence[k].name] = jx[j]; cnt++ break } } } if( cnt==0 ) continue h += "<tr></tr>" /* To defeat even/odd row coloring */ h += "<tr><td colspan=7 align='left'>\n" if( top ){ top = 0; }else{ h += "<hr>\n"; } h += "<center><b>" if( releases[i].titleurl ){ h += "<a href='" + releases[i].titleurl + "'>" + releases[i].title + "</a>\n" }else{ h += releases[i].title } if( releases[i].history ){ h += "(<a href='" + releases[i].history + "'>history graph</a>)\n" } if( releases[i].future ){ h += "(<a href='" + releases[i].future + "'>subsequent changes</a>)\n" } h += "</b></center></td></tr>\n<tr></tr><tr>" for(k=0; k<sequence.length; k++){ var nm = sequence[k].name h += "<td align='center' valign='bottom'>\n" var sz = 0; if( nm=="src" ){ h += "<a href='../tarball/"+releases[i].tarball+"'>\n" sz = releases[i].tarballsz }else if( products[nm] ){ h += "<a href='" + encodeURI(products[nm].name) + "'>\n" sz = products[nm].size } if( sz>0 ){ var icon = sequence[k].icon if( hash[icon]!="" ){ icon = "./"+hash[icon]; } h += "<img src='" + icon + "'><br>\n" h += sequence[k].title + "</a><br>\n" sz /= 1000000.0; h += sz.toFixed(2) + " MB\n" } h += "</td>\n" } h += "</tr>\n" } h += "</table>" document.getElementById("download_filelist").innerHTML = h; } r1.open("GET","../juvlist",true); r1.send()