// scrolltable.js - scroll functions for dataTable function scrollAndFocus(rootId, tableId, txtId) { scrollToBottom(rootId + ":" + tableId); $(rootId +":" + txtId).focus(); } function scrollToBottom(idDataTable) { pTable = digestTable(idDataTable); scrollToRow(pTable, 9999); } function digestTable(idDataTable) { pTable = { id: idDataTable } pTable.jqId = '#' + idDataTable.replaceAll(':', '\\:'); pTable.jqData = pTable.jqId + "_data"; pTable.heignt = $(pTable.jqId + " .ui-datatable-scrollable-body").height(); //var lichildren = $(pTable.jqId).children("tr"); var lichildren = $(pTable.jqId).find("tr"); pTable.itemHeight = lichildren.height(); pTable.itemCount = lichildren.length; pTable.visibleItemCount = pTable.height / pTable.itemHeight; return pTable; } function scrollToRow(pTable, selItem) { var maxScrollItem = pTable.itemCount - pTable.visibleItemCount; var scrollTopInPx; if(selItem >= maxScrollItem) { // scroll table to the bottom scrollTopInPx = pTable.itemCount * pTable.itemHeight; } else if(selItem < 2) { // scroll table to the top scrollTopInPx = 0; } else { // scroll selected item to the 1.2 th position scrollTopInPx = (selItem - 1.2) * pTable.itemHeight; } //$(pTable.jqId + " .ui-datatable-scrollable-body").animate({scrollTop:scrollTopInPx, duration: 20}, scrollTopInPx); $(pTable.jqId + " .ui-datatable-scrollable-body").scrollTop(scrollTopInPx); } /** * This function scrolls the selected Item of a * = maxScrollItem) { // scroll table to the bottom scrollTopInPx = maxScrollItem * itemHeight; } else if(selItem < 2) { // scroll table to the top scrollTopInPx = 0; } else { // scroll selected item to the 1.2 th position scrollTopInPx = (selItem - 1.2) * itemHeight; } $(idDataTbl + " .ui-datatable-scrollable-body").animate({scrollTop:scrollTopInPx}, scrollTopInPx); } function detectDataTableScrollPos(liChildren) { for (i=0;i< liChildren.length;++i) { var chd = liChildren[i]; var x = chd.getAttribute("aria-selected"); if(x === "true") { return i; } } return -1; }