Comparing version 1.6.0 to 1.6.1
@@ -25,3 +25,3 @@ /*global module:false*/ | ||
src: ['<banner:meta.banner>', '<file_strip_banner:src/<%= pkg.name %>.js>'], | ||
dest: '<%= pkg.name %>.js' | ||
dest: '<%= pkg.name %>.uncompressed.js' | ||
} | ||
@@ -28,0 +28,0 @@ }, |
{ | ||
"name": "tablesort", | ||
"description": "A sorting component for HTML tables", | ||
"version": "1.6.0", | ||
"version": "1.6.1", | ||
"author": "tristen <@fallsemo>", | ||
@@ -12,3 +12,4 @@ "ender": "./ender.js", | ||
"Dong Liu <@dongliu>", | ||
"Andrew Cobby <andrew.cobby@gmail.com>" | ||
"Andrew Cobby <andrew.cobby@gmail.com>", | ||
"Pavel D. <@thexpaw>" | ||
], | ||
@@ -15,0 +16,0 @@ "licenses": [{ |
@@ -22,3 +22,3 @@ # tablesort.js | ||
__Ascending/Descending__ | ||
__Ascending/Descending__ | ||
You can pass in options as a second parameter. Currently one option is supported: `descending: true`. By default, sort is set to ascending. | ||
@@ -32,3 +32,3 @@ | ||
__Exclude columns or rows__ | ||
__Exclude columns or rows__ | ||
For columns or rows that do not require sorting, you can add a class of `no-sort` to a columns `th` or a `tr` element. | ||
@@ -47,3 +47,17 @@ ``` html | ||
__Refresh sort on appended data__ | ||
__Override data that is sorted on__ | ||
Sometimes text inside cells is not normalized. Using a `data-sort` attribute you can use optional data to sort on. | ||
``` html | ||
<tr> | ||
<td>1</td> | ||
<td data-sort='1357656438'>01/08/13 @ 8:47:18am EST</td> | ||
</tr> | ||
<tr> | ||
<td>2</td> | ||
<td data-sort='1078673085'>3/7/2004 @ 9:24:45 EST</td> | ||
</tr> | ||
``` | ||
__Refresh sort on appended data__ | ||
Tablesort supports sorting when new data has been added. Simply call the refresh method. | ||
@@ -50,0 +64,0 @@ |
@@ -13,4 +13,4 @@ ;(function () { | ||
init: function(el, options) { | ||
var that = this; | ||
var firstRow; | ||
var that = this, | ||
firstRow; | ||
this.thead = false; | ||
@@ -59,7 +59,8 @@ this.options = options; | ||
sortTable: function(header, update) { | ||
var that = this; | ||
var column = header.cellIndex; | ||
var sortFunction; | ||
var t = getParent(header, 'table'); | ||
var item = '', i = 0; | ||
var that = this, | ||
column = header.cellIndex, | ||
sortFunction, | ||
t = getParent(header, 'table'), | ||
item = '', | ||
i = 0; | ||
@@ -70,3 +71,2 @@ if (t.rows.length <= 1) { | ||
while (item === '' && i < t.tBodies[0].rows.length) { | ||
@@ -88,4 +88,4 @@ item = getInnerText(t.tBodies[0].rows[i].cells[column]); | ||
var sortCaseInsensitive = function (a, b) { | ||
var aa = getInnerText(a.cells[that.col]).toLowerCase(); | ||
var bb = getInnerText(b.cells[that.col]).toLowerCase(); | ||
var aa = getInnerText(a.cells[that.col]).toLowerCase(), | ||
bb = getInnerText(b.cells[that.col]).toLowerCase(); | ||
@@ -102,9 +102,12 @@ if(aa === bb) { | ||
}; | ||
var sortNumber = function (a, b) { | ||
var aa = getInnerText(a.cells[that.col]); | ||
var aa = getInnerText(a.cells[that.col]), | ||
bb = getInnerText(b.cells[that.col]); | ||
aa = cleanNumber(aa); | ||
var bb = getInnerText(b.cells[that.col]); | ||
bb = cleanNumber(bb); | ||
return compareNumber(bb, aa); | ||
}; | ||
var sortDate = function(a, b) { | ||
@@ -126,24 +129,19 @@ var aa = getInnerText(a.cells[that.col]).toLowerCase(), | ||
this.col = column; | ||
var firstRow = [], | ||
newRows = [], | ||
k, j; | ||
var newRows = [], | ||
j = 0; | ||
for (k = 0; k < t.tBodies.length; k++) { | ||
for(i = 0; i < t.tBodies[k].rows[0].length; i++) { | ||
firstRow[i] = t.tBodies[k].rows[0][i]; | ||
} | ||
} | ||
for (k = 0; k < t.tBodies.length; k++) { | ||
for (i = 0; i < t.tBodies.length; i++) { | ||
if (!that.thead) { | ||
// skip the first row | ||
for(j = 1; j < t.tBodies[k].rows.length; j++) { | ||
newRows[j - 1] = t.tBodies[k].rows[j]; | ||
for(j = 1; j < t.tBodies[i].rows.length; j++) { | ||
newRows[j - 1] = t.tBodies[i].rows[j]; | ||
} | ||
} else { | ||
// don't skip the first row | ||
for(j = 0; j < t.tBodies[k].rows.length; j++) { | ||
newRows[j] = t.tBodies[k].rows[j]; | ||
for(j = 0; j < t.tBodies[i].rows.length; j++) { | ||
newRows[j] = t.tBodies[i].rows[j]; | ||
} | ||
} | ||
} | ||
newRows.sort(sortFunction); | ||
@@ -204,2 +202,3 @@ | ||
}, | ||
parseDate = function (date) { | ||
@@ -210,2 +209,3 @@ date = date.replace(/\-/g, '/'); | ||
}, | ||
getParent = function (el, pTagName) { | ||
@@ -220,2 +220,3 @@ if (el === null) { | ||
}, | ||
getInnerText = function (el) { | ||
@@ -227,11 +228,16 @@ var that = this; | ||
} | ||
if (el.textContent) { | ||
var str = el.getAttribute('data-sort') || ''; | ||
if (str) { | ||
return str; | ||
} | ||
else if (el.textContent) { | ||
return el.textContent; | ||
} | ||
if (el.innerText) { | ||
else if (el.innerText) { | ||
return el.innerText; | ||
} | ||
var str = '', | ||
cs = el.childNodes, | ||
var cs = el.childNodes, | ||
l = cs.length; | ||
@@ -254,18 +260,24 @@ | ||
}, | ||
compareNumber = function (a, b) { | ||
var aa = parseFloat(a); | ||
var aa = parseFloat(a), | ||
bb = parseFloat(b); | ||
a = isNaN(aa) ? 0 : aa; | ||
var bb = parseFloat(b); | ||
b = isNaN(bb) ? 0 : bb; | ||
return a - b; | ||
}, | ||
trim = function (s) { | ||
return s.replace(/^\s+|\s+$/g, ''); | ||
}, | ||
cleanNumber = function (i) { | ||
return i.replace(/[^\-?0-9.]/g, ''); | ||
}, | ||
hasClass = function (el, c) { | ||
return(' ' + el.className + ' ').indexOf(' ' + c + ' ') > -1; | ||
}, | ||
// http://ejohn.org/apps/jselect/event.html | ||
@@ -285,2 +297,2 @@ addEvent = function (object, event, method) { | ||
window.Tablesort = Tablesort; | ||
})(); | ||
})(); |
/*! | ||
* tablesort v1.6.0 (2012-11-10) | ||
* tablesort v1.6.1 (2013-02-14) | ||
* http://tristen.ca/tablesort/demo | ||
* Copyright (c) 2012 ; Licensed MIT | ||
* Copyright (c) 2013 ; Licensed MIT | ||
*/ | ||
(function(){function e(e,t){if(e.tagName!=="TABLE")throw new Error("Element must be a table");this.init(e,t||{})}e.prototype={init:function(e,t){var n=this,r;this.thead=!1,this.options=t,this.options.d=t.descending||!1,e.rows&&e.rows.length>0&&(e.tHead&&e.tHead.rows.length>0?(r=e.tHead.rows[e.tHead.rows.length-1],n.thead=!0):r=e.rows[0]);if(!r)return;var i=function(e){var t=o(u,"tr").getElementsByTagName("th");for(var r=0;r<t.length;r++)(c(t[r],"sort-up")||c(t[r],"sort-down"))&&t[r]!==this&&(t[r].className=t[r].className.replace(" sort-down","").replace(" sort-up",""));n.current=this,n.sortTable(this)};for(var s=0;s<r.cells.length;s++){var u=r.cells[s];c(u,"no-sort")||(u.className+=" sort-header",h(u,"click",i))}},sortTable:function(e,t){var n=this,r=e.cellIndex,h,p=o(e,"table"),d="",v=0;if(p.rows.length<=1)return;while(d===""&&v<p.tBodies[0].rows.length){d=u(p.tBodies[0].rows[v].cells[r]),d=f(d);if(d.substr(0,4)==="<!--"||d.length===0)d="";v++}if(d==="")return;var m=function(e,t){var r=u(e.cells[n.col]).toLowerCase(),i=u(t.cells[n.col]).toLowerCase();return r===i?0:r<i?1:-1},g=function(e,t){var r=u(e.cells[n.col]);r=l(r);var i=u(t.cells[n.col]);return i=l(i),a(i,r)},y=function(e,t){var r=u(e.cells[n.col]).toLowerCase(),i=u(t.cells[n.col]).toLowerCase();return s(i)-s(r)};d.match(/^-?[£\x24Û¢´]\d/)||d.match(/^-?(\d+[,\.]?)+(E[\-+][\d]+)?%?$/)?h=g:i(d)?h=y:h=m,this.col=r;var b=[],w=[],E,S;for(E=0;E<p.tBodies.length;E++)for(v=0;v<p.tBodies[E].rows[0].length;v++)b[v]=p.tBodies[E].rows[0][v];for(E=0;E<p.tBodies.length;E++)if(!n.thead)for(S=1;S<p.tBodies[E].rows.length;S++)w[S-1]=p.tBodies[E].rows[S];else for(S=0;S<p.tBodies[E].rows.length;S++)w[S]=p.tBodies[E].rows[S];w.sort(h),t||(n.options.d?c(e,"sort-up")?(e.className=e.className.replace(/ sort-up/,""),e.className+=" sort-down"):(e.className=e.className.replace(/ sort-down/,""),e.className+=" sort-up"):c(e,"sort-down")?(e.className=e.className.replace(/ sort-down/,""),e.className+=" sort-up"):(e.className=e.className.replace(/ sort-up/,""),e.className+=" sort-down")),c(e,"sort-down")&&w.reverse();for(v=0;v<w.length;v++)c(w[v],"no-sort")||p.tBodies[0].appendChild(w[v])},refresh:function(){this.current!==undefined&&this.sortTable(this.current,!0)}};var t=/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\.?\,?\s*/i,n=/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/,r=/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i,i=function(e){return(e.search(t)!==-1||e.search(n)!==-1||e.search(r!==-1))!==-1},s=function(e){return e=e.replace(/\-/g,"/"),e=e.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3"),(new Date(e)).getTime()},o=function(e,t){return e===null?null:e.nodeType===1&&e.tagName.toLowerCase()===t.toLowerCase()?e:o(e.parentNode,t)},u=function(e){var t=this;if(typeof e=="string"||typeof e=="undefined")return e;if(e.textContent)return e.textContent;if(e.innerText)return e.innerText;var n="",r=e.childNodes,i=r.length;for(var s=0;s<i;s++)switch(r[s].nodeType){case 1:n+=t.getInnerText(r[s]);break;case 3:n+=r[s].nodeValue}return n},a=function(e,t){var n=parseFloat(e);e=isNaN(n)?0:n;var r=parseFloat(t);return t=isNaN(r)?0:r,e-t},f=function(e){return e.replace(/^\s+|\s+$/g,"")},l=function(e){return e.replace(/[^\-?0-9.]/g,"")},c=function(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1},h=function(e,t,n){e.attachEvent?(e["e"+t+n]=n,e[t+n]=function(){e["e"+t+n](window.event)},e.attachEvent("on"+t,e[t+n])):e.addEventListener(t,n,!1)};window.Tablesort=e})(); | ||
(function(){function e(e,t){if(e.tagName!=="TABLE")throw new Error("Element must be a table");this.init(e,t||{})}e.prototype={init:function(e,t){var n=this,r;this.thead=!1,this.options=t,this.options.d=t.descending||!1,e.rows&&e.rows.length>0&&(e.tHead&&e.tHead.rows.length>0?(r=e.tHead.rows[e.tHead.rows.length-1],n.thead=!0):r=e.rows[0]);if(!r)return;var i=function(e){var t=o(u,"tr").getElementsByTagName("th");for(var r=0;r<t.length;r++)(c(t[r],"sort-up")||c(t[r],"sort-down"))&&t[r]!==this&&(t[r].className=t[r].className.replace(" sort-down","").replace(" sort-up",""));n.current=this,n.sortTable(this)};for(var s=0;s<r.cells.length;s++){var u=r.cells[s];c(u,"no-sort")||(u.className+=" sort-header",h(u,"click",i))}},sortTable:function(e,t){var n=this,r=e.cellIndex,h,p=o(e,"table"),d="",v=0;if(p.rows.length<=1)return;while(d===""&&v<p.tBodies[0].rows.length){d=u(p.tBodies[0].rows[v].cells[r]),d=f(d);if(d.substr(0,4)==="<!--"||d.length===0)d="";v++}if(d==="")return;var m=function(e,t){var r=u(e.cells[n.col]).toLowerCase(),i=u(t.cells[n.col]).toLowerCase();return r===i?0:r<i?1:-1},g=function(e,t){var r=u(e.cells[n.col]),i=u(t.cells[n.col]);return r=l(r),i=l(i),a(i,r)},y=function(e,t){var r=u(e.cells[n.col]).toLowerCase(),i=u(t.cells[n.col]).toLowerCase();return s(i)-s(r)};d.match(/^-?[£\x24Û¢´]\d/)||d.match(/^-?(\d+[,\.]?)+(E[\-+][\d]+)?%?$/)?h=g:i(d)?h=y:h=m,this.col=r;var b=[],w=0;for(v=0;v<p.tBodies.length;v++)if(!n.thead)for(w=1;w<p.tBodies[v].rows.length;w++)b[w-1]=p.tBodies[v].rows[w];else for(w=0;w<p.tBodies[v].rows.length;w++)b[w]=p.tBodies[v].rows[w];b.sort(h),t||(n.options.d?c(e,"sort-up")?(e.className=e.className.replace(/ sort-up/,""),e.className+=" sort-down"):(e.className=e.className.replace(/ sort-down/,""),e.className+=" sort-up"):c(e,"sort-down")?(e.className=e.className.replace(/ sort-down/,""),e.className+=" sort-up"):(e.className=e.className.replace(/ sort-up/,""),e.className+=" sort-down")),c(e,"sort-down")&&b.reverse();for(v=0;v<b.length;v++)c(b[v],"no-sort")||p.tBodies[0].appendChild(b[v])},refresh:function(){this.current!==undefined&&this.sortTable(this.current,!0)}};var t=/(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\.?\,?\s*/i,n=/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/,r=/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i,i=function(e){return(e.search(t)!==-1||e.search(n)!==-1||e.search(r!==-1))!==-1},s=function(e){return e=e.replace(/\-/g,"/"),e=e.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3"),(new Date(e)).getTime()},o=function(e,t){return e===null?null:e.nodeType===1&&e.tagName.toLowerCase()===t.toLowerCase()?e:o(e.parentNode,t)},u=function(e){var t=this;if(typeof e=="string"||typeof e=="undefined")return e;var n=e.getAttribute("data-sort")||"";if(n)return n;if(e.textContent)return e.textContent;if(e.innerText)return e.innerText;var r=e.childNodes,i=r.length;for(var s=0;s<i;s++)switch(r[s].nodeType){case 1:n+=t.getInnerText(r[s]);break;case 3:n+=r[s].nodeValue}return n},a=function(e,t){var n=parseFloat(e),r=parseFloat(t);return e=isNaN(n)?0:n,t=isNaN(r)?0:r,e-t},f=function(e){return e.replace(/^\s+|\s+$/g,"")},l=function(e){return e.replace(/[^\-?0-9.]/g,"")},c=function(e,t){return(" "+e.className+" ").indexOf(" "+t+" ")>-1},h=function(e,t,n){e.attachEvent?(e["e"+t+n]=n,e[t+n]=function(){e["e"+t+n](window.event)},e.attachEvent("on"+t,e[t+n])):e.addEventListener(t,n,!1)};window.Tablesort=e})(); |
Sorry, the diff of this file is not supported yet
102360
139
2282