// var columnSortDisplayTable ; /* File: ColumnSorting.js Module: Cvms Auction1.0.2 Purpose: The file is modified for solving Bug No 6 Ver Date Author Addition/Changes 1.0 Oct 1 03 Vikram Puranik Modified function toCurrency 1.1 Nov 4 03 Vikram Puranik Modified function toCurrency */ var tableDataArray = new Array () ; var tableNo = 0; var tempsrno = 0; var isDetailType = false; var dLimit; var lowLimit = 0; var highLimit = 0; var tempDetail = "Yes"; // This variable is meant for Detail view function tableData () { var sortArray; // array for sorting var displayArray; // array for display var columnDataArray ; // array for columnproperties var headers ; // array for table headers var div ; // for display on IE var layer ; // for display on NETSCAPE var noOfColumns ; // No. of columns in tables var tableName ; // For diffrenciating between checkboxes var prevSortedcolumnNo ; // stores columnno of last sorted column var noOfRecords ; var displayLimit ; // Maximum No Of Rows To Be Display in Table. var tableWidth ; var showTotal ; // to show or not to show total at bottom var floatValue ; var detailColumnList; // List of columns to be shown s var tableNo; } function columnData () { var sortType; var columnType; var picType ; var subTotalType ; // actual total for a column var alignmentType ; var showType ; // whether to show particular column or not (value must be either 'false' or 'true') var columnWidth ; var image ; var columntotalShow ; // flag to decide whether to show total in the coulmn or not } // function sortAndDisplay(columnno, columnSortDisplayTable, tableNo, srno) { function sortAndDisplay() { leng = sortAndDisplay.arguments.length; args = sortAndDisplay.arguments; var columnno = args[0]; // var columnSortDisplayTable = args[1]; var tableNo = args[2]; columnSortDisplayTable = tableDataArray[tableNo]; var srno = 0; if(leng >= 4) { srno = args[3]; } columnCount = eval(columnSortDisplayTable.noOfColumns); // var displimit = columnSortDisplayTable.displayLimit ; if(columnSortDisplayTable.displayLimit) { if(parseInt(columnSortDisplayTable.displayLimit) < columnSortDisplayTable.noOfRecords) { displayLimit = parseInt(columnSortDisplayTable.displayLimit) ; } else { displayLimit = columnSortDisplayTable.noOfRecords ; } } else { displayLimit = columnSortDisplayTable.displayLimit = columnSortDisplayTable.noOfRecords ; } lowLimit = srno+1 ; if( ( parseInt( columnSortDisplayTable.displayLimit ) + parseInt( srno ) ) > columnSortDisplayTable.noOfRecords ) { highLimit = columnSortDisplayTable.noOfRecords ; }else { highLimit = (parseInt( columnSortDisplayTable.displayLimit )+ parseInt( srno )) ; } sortarray(eval(columnno), columnSortDisplayTable.sortArray, columnSortDisplayTable.displayArray, columnSortDisplayTable.columnDataArray, eval(lowLimit),eval(highLimit)); tableDataArray[tableNo] = columnSortDisplayTable ; setHeaderOrderType(columnno, columnSortDisplayTable.columnDataArray); display(columnSortDisplayTable, tableNo, srno); } function setHeaderOrderType(columnno, arrayColumnData) { for (var i=0;i= high) { return ; } var low0 = low; var high0= high; var mid = arraySorting[columnno][Math.floor((low0+high0)/2)]; while(low <= high) { while(low < high0 && ((arraySorting[columnno][low] < mid && arrayColumnData[columnno].sortType == "asc") ||(arraySorting[columnno][low] > mid && arrayColumnData[columnno].sortType == "desc") )) { ++low; } while(high > low0 && ((arraySorting[columnno][high] > mid && arrayColumnData[columnno].sortType == "asc") ||(arraySorting[columnno][high] < mid && arrayColumnData[columnno].sortType == "desc") )) { --high; } if(low <= high) { swap (arraySorting, arrayDisplay, columnno, low, high) ; ++low; --high; } } if(low0 < high) { qsort(columnno, arraySorting, arrayDisplay, arrayColumnData, low0, high); } if(low < high0) { qsort(columnno, arraySorting, arrayDisplay, arrayColumnData, low, high0); } } function sortarray(columnno, arraySorting, arrayDisplay, arrayColumnData, low, high) { if(arrayColumnData[columnno].sortType == 'asc') { if(columnno == tableData.prevSortedcolumnNo){ arrayColumnData[columnno].sortType = 'desc'; } else { arrayColumnData[columnno].sortType = 'asc'; } } else { if(columnno == tableData.prevSortedcolumnNo){ arrayColumnData[columnno].sortType = 'asc'; } else { arrayColumnData[columnno].sortType = 'desc'; } } qsort(columnno, arraySorting, arrayDisplay, arrayColumnData, low, high); tableData.prevSortedcolumnNo = columnno ; } function swap(arraySorting, arrayDisplay, columnno, i, j) { for(var k=0;k"; var rows = 0 ; var limit = columnCount - 6 ; if (columnCount>= 6) { rows = columnCount/6 ; rows = Math.ceil(rows) ; var initial = 0 ; var final2 = 6; for(var j=0;j"; for (var i=initial;i"; if(columnSortDisplayTable.columnDataArray[i].showType == "true") { //alert(columnSortDisplayTable.columnDataArray[i].showType); content = content + " "; }else { content = content + " "; } content = content + columnSortDisplayTable.headers[i]; content = content + ""; } content = content + ""; initial = initial + 6 ; final2 = final2 + limit; } } else { var top = table+"checktop" ; content = content + ""; content = content + ""; for (var i=0;i"; if(columnSortDisplayTable.columnDataArray[i].showType == "true") { content = content + " "; }else { content = content + " "; } content = content + columnSortDisplayTable.headers[i]; content = content + ""; } content = content + ""; } content = content + "
" ; return content ; } function bottomColumnHide(content, columnSortDisplayTable, tableNo) { var table = columnSortDisplayTable.tableName; var bottom = table+"checkbottom" ; var content = ""; var rows = 0 ; var limit = columnCount - 6 ; if (columnCount>= 6) { rows = columnCount/6 ; rows = Math.ceil(rows) ; var initial = 0 ; var final2 = 6; for(var j=0;j"; for (var i=initial;i"; if(columnSortDisplayTable.columnDataArray[i].showType == "true") { content = content + " "; }else { content = content + " "; } content = content + columnSortDisplayTable.headers[i]; content = content + ""; } content = content + ""; initial = initial + 6 ; // final2 = final2 + 6; final2 = final2 + limit; } } else { // var bottom = table+"checkbottom" ; for (var i=0;i"; if(columnSortDisplayTable.columnDataArray[i].showType == "true") { content = content + " "; }else { content = content + " "; } content = content + columnSortDisplayTable.headers[i]; content = content + ""; } content = content + ""; } content = content + "
" ; return content ; } function display(columnSortDisplayTable, tableNo,srno) { tempsrno = srno; var displayDiv = columnSortDisplayTable.div ; var displayLayer =columnSortDisplayTable.layer ; var table = columnSortDisplayTable.tableName; dLimit = columnSortDisplayTable.displayLimit; var columnCount = eval(columnSortDisplayTable.noOfColumns); if(eval(columnSortDisplayTable.navigation)) { if( tempsrno >= 0 || tempsrno > columnSortDisplayTable.noOfRecords) { var finalString = doIt( columnSortDisplayTable,tableNo, tempsrno ,dLimit); } } if( isDetailType == true ) { showDetails( columnSortDisplayTable,tableNo, tempsrno ,tempDetail); } var finalString = ""; var content = ""; // content = content + topColumnHide(content,columnSortDisplayTable, tableNo,srno) ; // content = content + "
" ; if(columnSortDisplayTable.tableWidth) { content = content + ""; } else { content = content + "
"; } // Displays header of the table var row=""; row = row+""; var head = table+"checkheader" ; row = row + ""; row = row +""; row = row + "" ; for(var i=0;i" ; } else if(columnSortDisplayTable.columnDataArray[i].alignmentType == "1") { row = row + ""; } } row = row + ""; content = content + row; //-- Displays the body of the table var column0 = new Array(); column0 = columnSortDisplayTable.displayArray[0]; var rowArray = new Array( dLimit ); var pageRowCount = 0; if( ( parseInt( dLimit ) + parseInt( tempsrno ) ) > columnSortDisplayTable.noOfRecords ) { pageRowCount = columnSortDisplayTable.noOfRecords ; }else { pageRowCount = (parseInt( dLimit )+ parseInt(tempsrno)) ; } var k = 0 ; var pageTotal = new Array(columnSortDisplayTable.noOfColumns); if(columnSortDisplayTable.showTotal == "Yes") { for(var i=0;i" ; row = row + (j+1) + "." ; row = row + ""; for(var i=0;i" ; } else if(columnSortDisplayTable.columnDataArray[i].alignmentType == "1") { row = row + ""; } row = row + ""; rowArray[k] = row; } //-- Displays empty row, total and grandtotal if showtype is true //-- Displays empty row before total / grandtotal var brow = ""; if ( tableDataArray[tableNo].showTotal != "No"){ //-- Displays the PageTotal at the bottom of table // brow = brow + ""; if(columnSortDisplayTable.showTotal != "No") { brow = ""; } var colSpan = 1; for(var i=0;i" ; brow = brow + "Page Total" ; brow = brow + "" ; for(var i=colSpan-1;i" ; } else if(columnSortDisplayTable.columnDataArray[i].alignmentType == "1") { brow = brow + ""; } } } } brow = brow + ""; //-- Displays the GrandTotal at the bottom of table brow = brow + ""; if( columnSortDisplayTable.columnDataArray[0].subTotalType != null ) { brow = brow + "" ; } for (var i=colSpan-1;i" ; } else if(columnSortDisplayTable.columnDataArray[i].alignmentType == "1") { brow = brow + ""; } } } brow = brow + ""; if(columnSortDisplayTable.showTotal!= "No") { content = content + rowArray.join("") + brow + "
" ; row = row + "Sr. No."; row = row + "" ; } else { row = row + "" ; } row = row + "" + columnSortDisplayTable.headers[i] + columnSortDisplayTable.columnDataArray[i].picType+ ""; // row = row + ""; row = row + "
" ; } else { row = row + "" ; } row = row + columnSortDisplayTable.displayArray[i][j+1]; } if(parseInt(dLimit) < columnSortDisplayTable.noOfRecords){ if(columnSortDisplayTable.columnDataArray[i].columntotalShow == "Yes") { pageTotal[i] = pageTotal[i] + columnSortDisplayTable.sortArray[i][j+1] ; } else { pageTotal[i] = ' ' ; } } row = row + "
" ; } else if(columnSortDisplayTable.columnDataArray[i].alignmentType == "2") { brow = brow + "" ; } if( parseInt(dLimit) < columnSortDisplayTable.noOfRecords ){ // if(columnSortDisplayTable.columnDataArray[i].columnType == "float") // { // brow = brow + pageTotal[i].parseFloat(columnSortDisplayTable.floatValue); if(pageTotal[i] == ' ') { brow = brow + pageTotal[i]; } else { brow = brow + toCurrency(pageTotal[i]); } // } else { // brow = brow + pageTotal[i] ; // } } brow = brow + "
" ; if(columnSortDisplayTable.showTotal) { brow = brow + "Grand Total" ; } else { brow = brow + " " ; } brow = brow + "" ; } else if(columnSortDisplayTable.columnDataArray[i].alignmentType == "2") { brow = brow + "" ; } else { // if no datatype found OR null then defualt should be left alignment brow = brow + "" ; } // to check for negative value and show credit or debit with the total var tmpTotalStr = new String(columnSortDisplayTable.columnDataArray[i].subTotalType); //if(tmpTotalStr.charAt(0) == '-') { // tmpTotalStr = tmpTotalStr + " (DR)"; //}else { // tmpTotalStr = tmpTotalStr + " (CR)"; //} if( columnSortDisplayTable.columnDataArray[i].columntotalShow == "Yes" ) { brow = brow + tmpTotalStr ; }else { brow = brow + " "; } brow = brow + "
"; } else { content = content + rowArray.join("") + ""; } // content = content + "
" ; if( finalString != null) content = content + finalString; //content = content + bottomColumnHide(content, columnSortDisplayTable, tableNo) ; if(document.layers) { var doc = document.eval(displayLayer).document; doc.open(); doc.write(content); doc.close(); } else { eval(displayDiv).innerHTML = content; } } function nextMode(columnSortDisplayTable,tableNo,srno,dLimit) { // alert("limit"+dLimit); srno += parseInt(dLimit) ; // alert("srno"+srno); sortAndDisplay(0,tableDataArray[tableNo],tableNo,srno); } function previousMode(columnSortDisplayTable,tableNo,srno,dLimit) { srno -= dLimit; sortAndDisplay(0,tableDataArray[tableNo],tableNo,srno); } function firstMode(columnSortDisplayTable,tableNo,srno) { sortAndDisplay(0,tableDataArray[tableNo],tableNo,srno); } function lastMode(columnSortDisplayTable,tableNo,srno) { // alert("srno"+srno); if(srno == columnSortDisplayTable.noOfRecords) { srno -= dLimit; } sortAndDisplay(0,tableDataArray[tableNo],tableNo,srno); } // This Function is meant for Detail View , ie to show hide the columns function defaultHiddenColumns( isdecider , columnSortDisplayTable, tableNo,srno) { var colList = columnSortDisplayTable.detailColumnList; var count = 0; for(var i=0;i 6) { tmpString = tmpString.substring(0,nLength - 6) + "," + tmpString.substring(nLength - 6, nLength + 1); nLength = tmpString.length; var nOffset = 7; var nLoop = ((nLength - nOffset) / 3); if(((nLength - nOffset ) % 3) == 0) { nLoop--; } for(var i=1; i<=nLoop; i++) { tmpString = tmpString.substring(0,nLength - ((3 * i) + nOffset)) + "," + tmpString.substring(nLength - ((3 * i) + nOffset),nLength+1); nLength++; nOffset++; } } return negativeFlag ? ("-" + tmpString): tmpString; }