summaryrefslogtreecommitdiff
path: root/coverage/htmlfiles/coverage_html.js
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-11-25 09:51:51 -0500
committerNed Batchelder <ned@nedbatchelder.com>2009-11-25 09:51:51 -0500
commit4e8eb7332f0ead4715dc8a72ff9d229b3f7e3ba3 (patch)
tree5566b42cdb65c13b5c53f2ed7c71479732eb9845 /coverage/htmlfiles/coverage_html.js
parent378d98ef131441a27f87e6e6a27b2954d04d3532 (diff)
downloadpython-coveragepy-4e8eb7332f0ead4715dc8a72ff9d229b3f7e3ba3.tar.gz
Move the javascript code for click-to-sort columns into its own file. It helps keep the HTML tests from changing when the code changes. Also, don't compare non-HTML files in the tests.
Diffstat (limited to 'coverage/htmlfiles/coverage_html.js')
-rw-r--r--coverage/htmlfiles/coverage_html.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/coverage/htmlfiles/coverage_html.js b/coverage/htmlfiles/coverage_html.js
new file mode 100644
index 0000000..c0abab8
--- /dev/null
+++ b/coverage/htmlfiles/coverage_html.js
@@ -0,0 +1,64 @@
+// Coverage.py HTML report browser code.
+
+// Loaded on index.html
+function index_page_ready($) {
+ // Look for a cookie containing previous sort settings:
+ sort_list = [];
+ cookie_name = "COVERAGE_INDEX_SORT";
+
+ // This almost makes it worth installing the jQuery cookie plugin:
+ if (document.cookie.indexOf(cookie_name) > -1) {
+ cookies = document.cookie.split(";");
+ for (var i=0; i < cookies.length; i++) {
+ parts = cookies[i].split("=")
+
+ if ($.trim(parts[0]) == cookie_name && parts[1]) {
+ sort_list = eval("[[" + parts[1] + "]]");
+ break;
+ }
+ }
+ }
+
+ // Create a new widget which exists only to save and restore
+ // the sort order:
+ $.tablesorter.addWidget({
+ id: "persistentSort",
+
+ // Format is called by the widget before displaying:
+ format: function(table) {
+ if (table.config.sortList.length == 0 && sort_list.length > 0) {
+ // This table hasn't been sorted before - we'll use
+ // our stored settings:
+ jQuery(table).trigger('sorton', [sort_list]);
+ }
+ else {
+ // This is not the first load - something has
+ // already defined sorting so we'll just update
+ // our stored value to match:
+ sort_list = table.config.sortList;
+ }
+ }
+ });
+
+ // Configure our tablesorter to handle the variable number of
+ // columns produced depending on report options:
+ var headers = {};
+ var col_count = jQuery("table.index > thead > tr > th").length;
+
+ headers[0] = { sorter: 'text' };
+ for (var i = 1; i < col_count-1; i++) {
+ headers[i] = { sorter: 'digit' };
+ }
+ headers[col_count-1] = { sorter: 'percent' };
+
+ // Enable the table sorter:
+ $("table.index").tablesorter({
+ widgets: ['persistentSort'],
+ headers: headers
+ });
+
+ // Watch for page unload events so we can save the final sort settings:
+ $(window).unload(function() {
+ document.cookie = cookie_name + "=" + sort_list.toString() + "; path=/"
+ });
+}