Mercurial > hg-website
view static/js/download.js @ 397:29d4b5e45423
Use flask to render site and get rid of submodules
We don't want to use statically generated html files anymore. We are using
flask to do the routing and render the templates for now. This means we also
get rid of the submoduels and put everything together in templates/.
author | David Soria Parra <davidsp@fb.com> |
---|---|
date | Fri, 07 Mar 2014 14:47:13 -0800 |
parents | 8e3b10220bb9 |
children | c65b81353b8f |
line wrap: on
line source
function Download (source) { this.version = source[0]; this.regex = source[1]; this.url = source[2]; this.desc = source[3]; // Strip '.0' version suffix, unless it is for a minor version. // It is always incorrect for Mercurial releases. var points = this.version.split('.'); if (points.length > 2 && points[points.length-1] == "0") { points.pop(); this.version = points.join("."); } } Download.prototype = { matches: function (ua) { if (ua.match(this.regex)) return true; return false; }, download: function () { document.location.href = this.url; return false; }, attr: function (key) { return this[key]; }, write: function (key) { document.write(this[key]); } } var Downloader = { // maximum number of versions to display (0 to display all available) maxversions: 2, downloads: [], init: function (sources) { for (i in sources) { var source = new Download(sources[i]); this.downloads.push(source); } }, select: function () { var ua = navigator.userAgent; for (i in this.downloads) { if (this.downloads[i].matches(ua)) { return this.downloads[i]; } } return null; }, versions: function () { var uniq = new Object(); for (i in this.downloads) { uniq[this.downloads[i].version] = 1; } var versions = new Array(); for (key in uniq) { versions.push(key); } versions.sort(function (a, b) { a = a.toLowerCase(); b = b.toLowerCase(); return (a < b) - (b < a); }); return versions; }, listall: function (selector) { if (selector == null) selector = function (o) { return true; } // copy the download list, selecting only wanted nodes var downloads = new Array(); for (i in this.downloads) { if (selector(this.downloads[i])) { downloads.push(this.downloads[i]); } } // alpha-sort it by description (case-folded) downloads.sort(function (a, b) { a = a.desc.toLowerCase(); b = b.desc.toLowerCase(); return (b < a) - (a < b); }); var desc; var out = '' for (i in downloads) { var dl = downloads[i]; var ua = navigator.userAgent; if (dl.matches(ua)) desc = '<em>' + dl.desc + '</em>'; else desc = dl.desc; out += '<tr>\n<td>' + desc + '</td>' + '<td></td>' + '<td><a href="' + dl.url + '">download</a></td>' + '</tr>'; } return out; }, table: function (name, selector) { var out = ''; out += '<table border="0" cellspacing="0" ' + 'cellpadding="0" class="latest" width="100%">\n'; out += '<thead>\n'; out += '<tr>\n'; out += '<th>Mercurial '; out += name; out += '</th>'; out += '<th></th>'; out += '<th></th>'; out += '</tr>'; out += '</thead>'; out += '<tbody>'; out += this.listall(selector); out += '</tbody>'; out += '</table>'; out += '<br/>'; return out; } };