/* Adds row hiding ability to tables of class "wikitable". Based on "Table sorting script" at http://en.wikipedia.org/skins-1.5/common/wikibits.js?227 */ /* testing */ var MAX_DUMP_DEPTH = 1; function dumpObj(obj, name, indent, depth) { if (depth > MAX_DUMP_DEPTH) { return indent + name + ": \n"; } if (typeof obj == "object") { var child = null; var output = indent + name + "\n"; indent += "\t"; for (var item in obj) { try { child = obj[item]; } catch (e) { child = ""; } if (typeof child == "object") { output += dumpObj(child, item, indent, depth + 1); } else { output += indent + item + ": " + child + "\n"; } } return output; } else { return obj; } } /* /testing */ /* initialisation */ function hiderows_init() { var tables = document.getElementsByClassName("wikitable"); var idnum = 0; // for each table of class wikitable in the document for (var ti = 0; ti < tables.length; ti++) { if (!tables[ti].id) { tables[ti].setAttribute('id','hr_table_id_' + idnum); ++idnum; } hr_tuneTable(tables[ti]); } } function hr_tuneTable(table) { hr_makeRowsHideable(table); hr_addFooterControls(table); } function hr_makeRowsHideable(table) { var rows = table.getElementsByTagName("tr"); var idnum = 0; // for each row in the table for (var ri = 0; ri < rows.length; ri++) { if (!rows[ri].id) { rows[ri].setAttribute('id','hideable_row_id_' + idnum); ++idnum; } // add hide button hr_makeRowHideable(rows[ri]); } } // adds hide button and hide checkbox function hr_makeRowHideable(row) { // insert a cell on the top left var cell = row.insertCell(0); // http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-6986576 cell.innerHTML += '  ' + '' + 'Hide'; cell.innerHTML += '  ' + ''; } // adds "Hide selected" and "Unhide all" buttons function hr_addFooterControls(table) { controls = document.createElement("p"); controls.innerHTML = 'Hide selected'; controls.innerHTML += ' - Unhide all'; hr_addAfter(controls, table); } // generic dom macro. adds $new_node element as sibling after $sibling function hr_addAfter (new_node, sibling) { sibling.parentNode.insertBefore(new_node, sibling.nextSibling); } /* /initialisation */ /* event handlers */ function hr_hideSelectedTableRows (table_id) { var table = document.getElementById(table_id); var checkboxes = table.getElementsByClassName("hideBox"); for (var i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked == true) { // checkbox <- td <- tr checkboxes[i].parentNode.parentNode.style.display = 'none'; } } } function hr_unhideAllTableRows (table_id) { var table = document.getElementById(table_id); var rows = table.getElementsByTagName("tr"); for (var i = 0; i < rows.length; i++) { rows[i].style.display = ''; } } function hr_hideCellRow(td) { // td <- tr td.parentNode.style.display = 'none'; } /* /event handlers */