/** * This sorting plug-in for DataTables will correctly sort data in date time or date * format typically used in Germany: * date and time:`dd.mm.YYYY HH:mm` * just date:`dd.mm.YYYY`. * * @name Date (dd.mm.YYYY) or date and time (dd.mm.YYYY HH:mm) * @summary Sort date / time in the format `dd.mm.YYYY HH:mm` or `dd.mm.YYYY`. * @author [Ronny Vedrilla](http://www.ambient-innovation.com) * * @example * $('#example').dataTable( { * columnDefs: [ * { type: 'de_datetime', targets: 0 }, * { type: 'de_date', targets: 1 } * ] * } ); */ jQuery.extend( jQuery.fn.dataTableExt.oSort, { "de_datetime-asc": function ( a, b ) { var x, y; if ($.trim(a) !== '') { var deDatea = $.trim(a).split(' '); var deTimea = deDatea[1].split(':'); var deDatea2 = deDatea[0].split('.'); x = (deDatea2[2] + deDatea2[1] + deDatea2[0] + deTimea[0] + deTimea[1]) * 1; } else { x = Infinity; // = l'an 1000 ... } if ($.trim(b) !== '') { var deDateb = $.trim(b).split(' '); var deTimeb = deDateb[1].split(':'); deDateb = deDateb[0].split('.'); y = (deDateb[2] + deDateb[1] + deDateb[0] + deTimeb[0] + deTimeb[1]) * 1; } else { y = Infinity; } var z = ((x < y) ? -1 : ((x > y) ? 1 : 0)); return z; }, "de_datetime-desc": function ( a, b ) { var x, y; if ($.trim(a) !== '') { var deDatea = $.trim(a).split(' '); var deTimea = deDatea[1].split(':'); var deDatea2 = deDatea[0].split('.'); x = (deDatea2[2] + deDatea2[1] + deDatea2[0] + deTimea[0] + deTimea[1]) * 1; } else { x = Infinity; } if ($.trim(b) !== '') { var deDateb = $.trim(b).split(' '); var deTimeb = deDateb[1].split(':'); deDateb = deDateb[0].split('.'); y = (deDateb[2] + deDateb[1] + deDateb[0] + deTimeb[0] + deTimeb[1]) * 1; } else { y = Infinity; } var z = ((x < y) ? 1 : ((x > y) ? -1 : 0)); return z; }, "de_date-asc": function ( a, b ) { var x, y; if ($.trim(a) !== '') { var deDatea = $.trim(a).split('.'); x = (deDatea[2] + deDatea[1] + deDatea[0]) * 1; } else { x = Infinity; // = l'an 1000 ... } if ($.trim(b) !== '') { var deDateb = $.trim(b).split('.'); y = (deDateb[2] + deDateb[1] + deDateb[0]) * 1; } else { y = Infinity; } var z = ((x < y) ? -1 : ((x > y) ? 1 : 0)); return z; }, "de_date-desc": function ( a, b ) { var x, y; if ($.trim(a) !== '') { var deDatea = $.trim(a).split('.'); x = (deDatea[2] + deDatea[1] + deDatea[0]) * 1; } else { x = Infinity; } if ($.trim(b) !== '') { var deDateb = $.trim(b).split('.'); y = (deDateb[2] + deDateb[1] + deDateb[0]) * 1; } else { y = Infinity; } var z = ((x < y) ? 1 : ((x > y) ? -1 : 0)); return z; } } );