Quantcast
Channel: Free community support — DataTables forums
Viewing all articles
Browse latest Browse all 35271

Currency Sorting Help

$
0
0

I am trying to get the a currency sorting working. The following gets sorted as is

4,100.00 450.00 7,500.00

instead of

450.00 4,100.00 7,500.00

I have tried looking at the following but got no joy. http://www.datatables.net/forums/discussion/2436/currency-sorting-example

My table breaks and does not sort by any columns when headers are clicked

This is my code

$(document).ready(function() {
    if (jQuery().dataTable) {
        var dataTableDefaults = {
            "fnDrawCallback" : function () {
            },
            "aLengthMenu": [
            [10, 15, 25, 50, 100, -1],
            [10, 15, 25, 50, 100, "All"]
            ],
            "iDisplayLength": 25,
            "oLanguage": {
                "sLengthMenu": "_MENU_ Records per page",
                "sInfo": "_START_ - _END_ of _TOTAL_",
                "sInfoEmpty": "0 - 0 of 0",
                "oPaginate": {
                    "sPrevious": "Prev",
                    "sNext": "Next"
                }
            },
            "aoColumnDefs": [{
                'bSortable': false,
                'aTargets': [-1]
            }],
        }

        $("#currency_sort").dataTable($.extend(true, {}, dataTableDefaults ));

    }
});


jQuery.fn.dataTableExt.aTypes.push(
    function ( sData ) {
        var sValidChars = "0123456789.-,";
        var Char;

        /* Check the numeric part */
        for ( i=1 ; i<sData.length ; i++ ) {
            Char = sData.charAt(i);
            if (sValidChars.indexOf(Char) == -1) {
                return null;
            }
        }

        /* Check prefixed by currency */
        if ( sData.charAt(0) == '$' || sData.charAt(0) == '£' ) {
            return 'currency';
        }
        return null;
    }
);

jQuery.fn.dataTableExt.oSort['currency-asc'] = function(a,b) {
    /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
    var x = a == "-" ? 0 : a.replace( /,/g, "" );
    var y = b == "-" ? 0 : b.replace( /,/g, "" );

    /* Remove the currency sign */
    x = x.substring( 1 );
    y = y.substring( 1 );

    /* Parse and return */
    x = parseFloat( x );
    y = parseFloat( y );
    return x - y;
};

jQuery.fn.dataTableExt.oSort['currency-desc'] = function(a,b) {
    /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
    var x = a == "-" ? 0 : a.replace( /,/g, "" );
    var y = b == "-" ? 0 : b.replace( /,/g, "" );

    /* Remove the currency sign */
    x = x.substring( 1 );
    y = y.substring( 1 );

    /* Parse and return */
    x = parseFloat( x );
    y = parseFloat( y );
    return y - x;
};

Viewing all articles
Browse latest Browse all 35271

Trending Articles