|
|
Line 27: |
Line 27: |
| var expandCaption = 'show'; | | var expandCaption = 'show'; |
|
| |
|
| (function() {
| |
| function collapseTable(tableIndex) {
| |
| var Button = document.getElementById('collapseButton' + tableIndex);
| |
| var Table = document.getElementById('collapsibleTable' + tableIndex);
| |
|
| |
| if (!Table || !Button) {
| |
| return false;
| |
| }
| |
|
| |
| var Rows = Table.rows;
| |
| var i;
| |
|
| |
| if (Button.firstChild.data === collapseCaption) {
| |
| for (i = 1; i < Rows.length; i++) {
| |
| Rows[i].style.display = 'none';
| |
| }
| |
| Button.firstChild.data = expandCaption;
| |
| } else {
| |
| for (i = 1; i < Rows.length; i++) {
| |
| Rows[i].style.display = Rows[0].style.display;
| |
| }
| |
| Button.firstChild.data = collapseCaption;
| |
| }
| |
| }
| |
|
| |
| function createClickHandler(tableIndex) {
| |
| return function(e) {
| |
| e.preventDefault();
| |
| collapseTable(tableIndex);
| |
| };
| |
| }
| |
|
| |
| function createCollapseButtons() {
| |
| var tableIndex = 0;
| |
| var NavigationBoxes = {};
| |
| var Tables = document.getElementsByTagName('table');
| |
| var i;
| |
|
| |
| for (i = 0; i < Tables.length; i++) {
| |
| if ($(Tables[i]).hasClass('collapsible')) {
| |
| /* only add button and increment count if there is a header row to work with */
| |
| var HeaderRow = Tables[i].getElementsByTagName('tr')[0];
| |
| if (!HeaderRow) {
| |
| continue;
| |
| }
| |
| var Header = HeaderRow.getElementsByTagName('th')[0];
| |
| if (!Header) {
| |
| continue;
| |
| }
| |
|
| |
| NavigationBoxes[tableIndex] = Tables[i];
| |
| Tables[i].setAttribute('id', 'collapsibleTable' + tableIndex);
| |
|
| |
| var Button = document.createElement('span');
| |
| var ButtonLink = document.createElement('a');
| |
| var ButtonText = document.createTextNode(collapseCaption);
| |
| // TODO: Declare styles in [[MediaWiki:Gadget-collapsibleTables.css]]
| |
| // Button.className = 'collapseButton';
| |
| Button.style.styleFloat = 'right';
| |
| Button.style.cssFloat = 'right';
| |
| Button.style.fontWeight = 'normal';
| |
| Button.style.textAlign = 'right';
| |
| Button.style.width = '6em';
| |
|
| |
| ButtonLink.style.color = Header.style.color;
| |
| ButtonLink.setAttribute('id', 'collapseButton' + tableIndex);
| |
| ButtonLink.setAttribute('href', '#');
| |
| $(ButtonLink).on('click', createClickHandler(tableIndex));
| |
| ButtonLink.appendChild(ButtonText);
| |
|
| |
| Button.appendChild(document.createTextNode('['));
| |
| Button.appendChild(ButtonLink);
| |
| Button.appendChild(document.createTextNode(']'));
| |
|
| |
| Header.insertBefore(Button, Header.firstChild);
| |
| tableIndex++;
| |
| }
| |
| }
| |
|
| |
| for (i = 0; i < tableIndex; i++) {
| |
| if ($(NavigationBoxes[i]).hasClass('collapsed') ||
| |
| (tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass('autocollapse'))
| |
| ) {
| |
| collapseTable(i);
| |
| }
| |
| }
| |
| }
| |
|
| |
| mw.hook('wikipage.content').add(createCollapseButtons);
| |
| }());
| |
| /** | | /** |
| * Dynamic Navigation Bars. See [[Wikipedia:NavFrame]] | | * Dynamic Navigation Bars. See [[Wikipedia:NavFrame]] |