Merge pull request #230 from Silex/master

Sorting: Fix file-size plugin with string containing spaces
pull/231/head
Allan Jardine 9 years ago
commit d7f90d2ee4

@ -3,7 +3,7 @@
* such as B, KB, MB or GB to a string in order to easily denote the order of * such as B, KB, MB or GB to a string in order to easily denote the order of
* magnitude of the file size. This plug-in allows sorting to take these * magnitude of the file size. This plug-in allows sorting to take these
* indicates of size into account. * indicates of size into account.
* *
* A counterpart type detection plug-in is also available. * A counterpart type detection plug-in is also available.
* *
* @name File size * @name File size
@ -19,24 +19,16 @@
*/ */
jQuery.fn.dataTable.ext.type.order['file-size-pre'] = function ( data ) { jQuery.fn.dataTable.ext.type.order['file-size-pre'] = function ( data ) {
var units = data.replace( /[\d\.\s]/g, '' ).toLowerCase(); var matches = data.match( /^(\d+(?:\.\d+)?)\s*([a-z]+)/i );
var multiplier = 1; var multipliers = {
b: 1,
if ( units === 'kb' ) { kb: 1000,
multiplier = 1000; mb: 1000000,
} gb: 1000000000,
else if ( units === 'mb' ) { tb: 1000000000000,
multiplier = 1000000; pb: 1000000000000000
} };
else if ( units === 'gb' ) {
multiplier = 1000000000;
}
else if ( units === 'tb' ) {
multiplier = 1000000000000;
}
else if ( units === 'pb' ) {
multiplier = 1000000000000000;
}
return parseFloat( data ) * multiplier; var multiplier = multipliers[matches[2].toLowerCase()];
return parseFloat( matches[1] ) * multiplier;
}; };

@ -13,12 +13,8 @@ jQuery.fn.dataTable.ext.type.detect.unshift( function ( data ) {
return null; return null;
} }
var units = data.replace( /[\d\.]/g, '' ).toLowerCase(); var matches = data.match( /^(\d+(?:\.\d+)?)\s*([a-z]+)/i );
if ( units !== '' && units !== 'b' && units !== 'kb' && units !== 'mb' && units !== 'gb' ) { var units = ['b', 'kb', 'mb', 'gb', 'tb', 'pb'];
return null; var is_file_size = ( matches && jQuery.inArray(matches[2].toLowerCase(), units) !== -1 );
} return is_file_size ? 'file-size' : null;
} );
return isNaN( parseFloat( data ) ) ?
null :
'file-size';
} );

Loading…
Cancel
Save