X-Git-Url: http://git.euphorik.ch/?p=pompage.git;a=blobdiff_plain;f=doc%2Fwebdeveloper%2Fgenerated%2Ftable_sort.js;fp=doc%2Fwebdeveloper%2Fgenerated%2Ftable_sort.js;h=2ccfe2e9804e648629c53c037166b74d893888f1;hp=0000000000000000000000000000000000000000;hb=c3b0deb3d8c9f439739c79806e915c29bc1d4b84;hpb=cff6539539a79e014f6ac8df46716cafce2c8472 diff --git a/doc/webdeveloper/generated/table_sort.js b/doc/webdeveloper/generated/table_sort.js new file mode 100644 index 0000000..2ccfe2e --- /dev/null +++ b/doc/webdeveloper/generated/table_sort.js @@ -0,0 +1,152 @@ +var webdeveloper_currentTableSortColumn = 0; +var webdeveloper_previousTableSortColumn = 0; +var webdeveloper_sortAscending = false; + +// Makes all tables on the page with a sortable class sortable +function webdeveloper_makeTablesSortable() +{ + var tableHeaderLength = null; + var tableHeaderList = null; + var tableList = webdeveloper_evaluateXPath(document, "//table[@class='sortable']"); + var tableLength = tableList.length; + + // Loop through the tables + for(var i = 0; i < tableLength; i++) + { + tableHeaderList = tableList[i].getElementsByTagName("th"); + tableHeaderLength = tableHeaderList.length; + + // Loop through the table headers + for(var j = 0; j < tableHeaderLength; j++) + { + tableHeaderList[j].addEventListener("click", webdeveloper_sortTable, false); + } + } +} + +// Sorts a table +function webdeveloper_sortTable(event) +{ + // If the event is set + if(event) + { + var newTableRowList = new Array(); + var tableHeader = event.target; + var node = tableHeader; + var styleSheet = document.getElementById("webdeveloper-generated-content-stylesheet"); + var tableHeaderRow = tableHeader.parentNode; + var table = tableHeaderRow.parentNode; + var tableRow = null; + var tableRowList = table.childNodes; + var tableRowLength = tableRowList.length; + + webdeveloper_currentTableSortColumn = 0; + + // Loop through the previous siblings + while((node = node.previousSibling) != null) + { + webdeveloper_currentTableSortColumn++; + } + + // If the current sort column is the same as the previous sort column + if(webdeveloper_currentTableSortColumn == webdeveloper_previousTableSortColumn) + { + webdeveloper_sortAscending = !webdeveloper_sortAscending; + } + else + { + var previousTableHeader = tableHeaderRow.cells[webdeveloper_previousTableSortColumn]; + + webdeveloper_previousTableSortColumn = webdeveloper_currentTableSortColumn; + webdeveloper_sortAscending = true; + + // If the previous table header has a class attribute + if(previousTableHeader.hasAttribute("class")) + { + previousTableHeader.removeAttribute("class"); + } + } + + // If sorting in ascending order + if(webdeveloper_sortAscending) + { + tableHeader.setAttribute("class", "sort-ascending"); + } + else + { + tableHeader.setAttribute("class", "sort-descending"); + } + + // Loop through the table rows excluding the header row + for(var i = 1; i < tableRowLength; i++) + { + newTableRowList[i - 1] = tableRowList[i]; + } + + newTableRowList.sort(webdeveloper_sortTableRows); + webdeveloper_removeAllChildElements(table); + table.appendChild(tableHeaderRow); + + // Loop through the sorted table rows + for(i = 0; i < newTableRowList.length; i++) + { + tableRow = newTableRowList[i]; + + // If this is an even row + if(i % 2 == 0) + { + // If this row has a class attribute + if(tableRow.hasAttribute("class")) + { + tableRow.removeAttribute("class"); + } + } + else + { + tableRow.setAttribute("class", "shaded"); + } + + table.appendChild(tableRow); + } + + // Disable and enable the style sheet to force the styles to reapply + if(styleSheet) + { + styleSheet.disabled = true; + styleSheet.disabled = false; + } + } +} + +// Sorts two table rows +function webdeveloper_sortTableRows(rowOne, rowTwo) +{ + var sortValue = 1; + + // If row one and row two are set + if(rowOne && rowTwo) + { + var columnOne = webdeveloper_getElementText(rowOne.cells[webdeveloper_currentTableSortColumn]); + var columnTwo = webdeveloper_getElementText(rowTwo.cells[webdeveloper_currentTableSortColumn]); + + // If the columns are equal + if(columnOne == columnTwo) + { + return 0; + } + else if(columnOne < columnTwo) + { + sortValue = -1; + } + } + + // If sorting in descending order + if(!webdeveloper_sortAscending) + { + sortValue *= -1; + } + + return sortValue; +} + +webdeveloper_makeTablesSortable(); \ No newline at end of file