test table

By

on

/**
*
* Sortable HTML table
* http://www.webtoolkit.info/
*
**/

function SortableTable (tableEl) {

this.tbody = tableEl.getElementsByTagName(‘tbody’);
this.thead = tableEl.getElementsByTagName(‘thead’);
this.tfoot = tableEl.getElementsByTagName(‘tfoot’);

this.getInnerText = function (el) {
if (typeof(el.textContent) != ‘undefined’) return el.textContent;
if (typeof(el.innerText) != ‘undefined’) return el.innerText;
if (typeof(el.innerHTML) == ‘string’) return el.innerHTML.replace(/<[^<>]+>/g,”);
}

this.getParent = function (el, pTagName) {
if (el == null) return null;
else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())
return el;
else
return this.getParent(el.parentNode, pTagName);
}

this.sort = function (cell) {

var column = cell.cellIndex;
var itm = this.getInnerText(this.tbody[0].rows[1].cells[column]);
var sortfn = this.sortCaseInsensitive;

if (itm.match(/\d\d[-]+\d\d[-]+\d\d\d\d/)) sortfn = this.sortDate; // date format mm-dd-yyyy
if (itm.replace(/^\s+|\s+$/g,””).match(/^[\d\.]+$/)) sortfn = this.sortNumeric;

this.sortColumnIndex = column;

var newRows = new Array();
for (j = 0; j < this.tbody[0].rows.length; j++) {
newRows[j] = this.tbody[0].rows[j];
}

newRows.sort(sortfn);

if (cell.getAttribute(“sortdir”) == ‘down’) {
newRows.reverse();
cell.setAttribute(‘sortdir’,’up’);
} else {
cell.setAttribute(‘sortdir’,’down’);
}

for (i=0;i this.tbody[0].appendChild(newRows[i]);
}

}

this.sortCaseInsensitive = function(a,b) {
aa = thisObject.getInnerText(a.cells[thisObject.sortColumnIndex]).toLowerCase();
bb = thisObject.getInnerText(b.cells[thisObject.sortColumnIndex]).toLowerCase();
if (aa==bb) return 0;
if (aa return 1;
}

this.sortDate = function(a,b) {
aa = thisObject.getInnerText(a.cells[thisObject.sortColumnIndex]);
bb = thisObject.getInnerText(b.cells[thisObject.sortColumnIndex]);
date1 = aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2);
date2 = bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2);
if (date1==date2) return 0;
if (date1 return 1;
}

this.sortNumeric = function(a,b) {
aa = parseFloat(thisObject.getInnerText(a.cells[thisObject.sortColumnIndex]));
if (isNaN(aa)) aa = 0;
bb = parseFloat(thisObject.getInnerText(b.cells[thisObject.sortColumnIndex]));
if (isNaN(bb)) bb = 0;
return aa-bb;
}

// define variables
var thisObject = this;
var sortSection = this.thead;

// constructor actions
if (!(this.tbody && this.tbody[0].rows && this.tbody[0].rows.length > 0)) return;

if (sortSection && sortSection[0].rows && sortSection[0].rows.length > 0) {
var sortRow = sortSection[0].rows[0];
} else {
return;
}

for (var i=0; i sortRow.cells[i].sTable = this;
sortRow.cells[i].onclick = function () {
this.sTable.sort(this);
return false;
}
}

}

Community, News, Privateer Press Archive
Previous Post
Insider 3-17-2014
Next Post
Insider 3-18-2014

Related News

Menu