From 3682fb285b9f131a56aed2c6cab8d303c6aae5ae Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 30 Sep 2010 13:15:20 -0500 Subject: Move most inline JS into script file We're getting to the point where we are starting to have a good chunk of JS scattered about. Centralize a lot of it for maintenance and performance purposes. Signed-off-by: Dan McGee --- media/archweb.js | 130 ++++++++++++++++++++++++++++++++++++ templates/devel/index.html | 10 +-- templates/mirrors/status.html | 31 +-------- templates/news/add.html | 13 +--- templates/packages/details.html | 9 +-- templates/packages/differences.html | 41 +----------- templates/todolists/view.html | 25 +------ 7 files changed, 137 insertions(+), 122 deletions(-) create mode 100644 media/archweb.js diff --git a/media/archweb.js b/media/archweb.js new file mode 100644 index 00000000..ea287ab0 --- /dev/null +++ b/media/archweb.js @@ -0,0 +1,130 @@ +/* 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 = $(".results tbody tr"); + if(!$('#id_multilib').is(':checked')) { + rows = rows.not(".multilib"); + } + 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 + rows = rows.filter(function(index) { + // all this just to get the split version out of the table cell + var pat = /(.*)-(.+)/; + var ver_a = $('td:eq(2) span', this).text().match(pat); + var ver_b = $('td:eq(3) span', this).text().match(pat); + // did we match at all? + if(!ver_a || !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 + $('.results tbody tr').hide(); + rows.show(); + // make sure we update the odd/even styling from sorting + $('.results').trigger("applyWidgets"); +}; +filter_reset = function() { + $('#id_archonly').val("all"); + $('#id_multilib').removeAttr("checked"); + $('#id_minor').attr("checked", "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; +}; diff --git a/templates/devel/index.html b/templates/devel/index.html index f285f7f6..009a6834 100644 --- a/templates/devel/index.html +++ b/templates/devel/index.html @@ -190,16 +190,8 @@ {% load cdn %}{% jquery %} + + {% endblock %} diff --git a/templates/packages/details.html b/templates/packages/details.html index f84b85ef..09df176e 100644 --- a/templates/packages/details.html +++ b/templates/packages/details.html @@ -212,15 +212,8 @@ {% load cdn %}{% jquery %} + {% endblock %} diff --git a/templates/packages/differences.html b/templates/packages/differences.html index 2c1460ea..49f23b74 100644 --- a/templates/packages/differences.html +++ b/templates/packages/differences.html @@ -59,47 +59,8 @@ {% load cdn %}{% jquery %} + +