diff options
Diffstat (limited to 'media/archweb.js')
-rw-r--r-- | media/archweb.js | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/media/archweb.js b/media/archweb.js new file mode 100644 index 00000000..c5025ded --- /dev/null +++ b/media/archweb.js @@ -0,0 +1,136 @@ +/* tablesorter custom parsers for various pages: + * devel/index.html, mirrors/status.html, todolists/view.html */ +if(typeof $.tablesorter !== "undefined") { + $.tablesorter.addParser({ + id: 'pkgcount', + is: function(s) { return false; }, + format: function(s) { + var m = s.match(/\d+/); + return m ? parseInt(m[0]) : 0; + }, + type: 'numeric' + }); + $.tablesorter.addParser({ + id: 'todostatus', + is: function(s) { return false; }, + format: function(s) { + return s.match(/incomplete/) ? 1 : 0; + }, + type: 'numeric' + }); + $.tablesorter.addParser({ + /* sorts numeric, but put '', 'unknown', and '∞' last. */ + id: 'mostlydigit', + is: function(s,table) { + var special = ['', 'unknown', '∞']; + var c = table.config; + return ($.inArray(s, special) > -1) || $.tablesorter.isDigit(s,c); + }, + format: function(s) { + var special = ['', 'unknown', '∞']; + if($.inArray(s, special) > -1) return Number.MAX_VALUE; + return $.tablesorter.formatFloat(s); + }, + type: 'numeric' + }); + $.tablesorter.addParser({ + /* sorts duration; put '', 'unknown', and '∞' last. */ + id: 'duration', + is: function(s,table) { + var special = ['', 'unknown', '∞']; + return ($.inArray(s, special) > -1) || /^[0-9]+:[0-5][0-9]$/.test(s); + }, + format: function(s) { + var special = ['', 'unknown', '∞']; + if($.inArray(s, special) > -1) return Number.MAX_VALUE; + matches = /^([0-9]+):([0-5][0-9])$/.exec(s); + return matches[1] * 60 + matches[2]; + }, + type: 'numeric' + }); +} + +/* news/add.html */ +function enablePreview() { + $('#previewbtn').click(function(event) { + event.preventDefault(); + $.post('/news/preview/', + { data: $('#id_content').val() }, + function(data) { + $('#previewdata').html(data); + $('.news-article').show(); + } + ); + $('#previewtitle').html($('#id_title').val()); + }); +} + +/* packages/details.html */ +function ajaxifyFiles() { + $('#filelink').click(function(event) { + event.preventDefault(); + $.get(this.href, function(data) { + $('#pkgfilelist').html(data); + }); + }); +} + +/* packages/differences.html */ +filter_packages = function() { + // start with all rows, and then remove ones we shouldn't show + var rows = $("#tbody_differences").children(); + var all_rows = rows; + if(!$('#id_multilib').is(':checked')) { + rows = rows.not(".multilib").not(".multilib-testing"); + } + var arch = $("#id_archonly").val(); + if(arch !== "all") { + rows = rows.filter("." + arch); + } + if(!$('#id_minor').is(':checked')) { + // this check is done last because it is the most expensive + var pat = /(.*)-(.+)/; + rows = rows.filter(function(index) { + var cells = $(this).children('td'); + + // all this just to get the split version out of the table cell + var ver_a = cells.eq(2).find('span').text().match(pat); + if(!ver_a) return true; + + var ver_b = cells.eq(3).find('span').text().match(pat); + if(!ver_b) return true; + + // first check pkgver + if(ver_a[1] !== ver_b[1]) return true; + // pkgver matched, so see if rounded pkgrel matches + if(Math.floor(parseFloat(ver_a[2])) == + Math.floor(parseFloat(ver_b[2]))) return false; + // pkgrel didn't match, so keep the row + return true; + }); + } + // hide all rows, then show the set we care about + all_rows.hide(); + rows.show(); + // make sure we update the odd/even styling from sorting + $('.results').trigger("applyWidgets"); +}; +filter_reset = function() { + $('#id_archonly').val("both"); + $('#id_multilib').removeAttr("checked"); + $('#id_minor').removeAttr("checked"); + filter_packages(); +}; + +/* todolists/view.html */ +todolist_flag = function() { + var link = this; + $.getJSON(link.href, function(data) { + if (data.complete) { + $(link).text('Complete').addClass('complete').removeClass('incomplete'); + } else { + $(link).text('Incomplete').addClass('incomplete').removeClass('complete'); + } + }); + return false; +}; |