/** * Sorts cells with empty values by placing them after cells with values * This helps when if you have column that may or may not have values * allowing items with values to appear first when sorting ascending * This was written to help with sorting items that were ranked, where * items without a rank number were considered lower in rank. * * This plug-in was inspired by this forum discussion * http://datatables.net/forums/discussion/4025/sorting-to-ignore-empty-cells * * * @name Empty * @summary Sort items without a value after items with a value * @author Timothy Stewart * * @example * $('#example').dataTable( { * columnDefs: [ * { type: 'empty', targets: 0 } * ] * } ); */ function emptySort(x, y) { // this is the value we will end up returning var retVal; // replace html spaces with empty, shouldn't happen but just in case x = x.replace(' ', ''); y = y.replace(' ', ''); // test if a number, if so, set it if (parseInt(x)) { x = parseInt(x) } if (parseInt(y)) { y = parseInt(y) } // now we need to eval the x,y values and set the order // if blank they will appear last if (x == y) retVal = 0; else if (parseInt(x) && parseInt(y)) { if (x > y) retVal = 1; else retVal = -1; } else if (parseInt(x)) retVal = -1; else if (parseInt(y)) retVal = 1; else if (x > y) retVal = 1; else return -1; return retVal; } jQuery.extend(jQuery.fn.dataTableExt.oSort, { 'empty-asc': function (a, b) { return emptySort(a, b); }, 'empty-desc': function (a, b) { return emptySort(b, a); } });