src/main/webapp/jquery/js/dataTables.dateFormat.js
author Tomas Zeman <tzeman@volny.cz>
Tue, 05 Jun 2012 15:40:45 +0200
changeset 105 66aeb6b3a3a7
parent 77 8f0eddd7aa85
permissions -rw-r--r--
85bf710ab532dcaa Datatables date sorting
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
77
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     1
/**
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     2
 * https://github.com/sedovsek/DataTables-EU-date-Plug-In
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     3
 * commit 4069413
105
66aeb6b3a3a7 85bf710ab532dcaa Datatables date sorting
Tomas Zeman <tzeman@volny.cz>
parents: 77
diff changeset
     4
 * (+ strip html tags surrounding dates)
77
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     5
 *
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     6
 * Copyright 2011 https://github.com/sedovsek
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     7
 *
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     8
 * DataTables-EU-date-Plug-In is a plug-in for sorting EU Date (european date
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
     9
 * format), (d)d.mm(.yyyy) or (d)d/mm(/yyyy)
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    10
 * 
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    11
 * Example:
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    12
 * <script type="text/javascript" src="jquery.dataTables.js"></script>
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    13
 * <script type="text/javascript" src="dataTables.dateFormat.js"></script>
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    14
 * <script type="text/javascript">
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    15
 * 	$(document).ready(function() {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    16
 * 		$('#example').dataTable( {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    17
 * 			"aoColumns": [
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    18
 * 				null,
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    19
 * 				null,
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    20
 * 				null,
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    21
 * 				{ "sType": "eu_date" },
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    22
 * 				null
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    23
 * 			]
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    24
 * 		} );
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    25
 * 	} );
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    26
 * </script>
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    27
 * 
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    28
 */
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    29
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    30
function calculate_date(date) {
105
66aeb6b3a3a7 85bf710ab532dcaa Datatables date sorting
Tomas Zeman <tzeman@volny.cz>
parents: 77
diff changeset
    31
	var date = date.replace(/<.*?>/g, "").replace(" ", "");
77
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    32
	
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    33
	if (date.indexOf('.') > 0) {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    34
		/*date a, format dd.mn.(yyyy) ; (year is optional)*/
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    35
		var eu_date = date.split('.');
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    36
	} else {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    37
		/*date a, format dd/mn/(yyyy) ; (year is optional)*/
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    38
		var eu_date = date.split('/');
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    39
	}
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    40
	
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    41
	/*year (optional)*/
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    42
	if (eu_date[2]) {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    43
		var year = eu_date[2];
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    44
	} else {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    45
		var year = 0;
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    46
	}
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    47
	
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    48
	/*month*/
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    49
	var month = eu_date[1];
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    50
	if (month.length == 1) {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    51
		month = 0+month;
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    52
	}
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    53
	
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    54
	/*day*/
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    55
	var day = eu_date[0];
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    56
	if (day.length == 1) {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    57
		day = 0+day;
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    58
	}
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    59
	
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    60
	return (year + month + day) * 1;
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    61
}
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    62
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    63
jQuery.fn.dataTableExt.oSort['eu_date-asc'] = function(a, b) {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    64
	x = calculate_date(a);
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    65
	y = calculate_date(b);
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    66
	
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    67
	return ((x < y) ? -1 : ((x > y) ?  1 : 0));
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    68
};
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    69
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    70
jQuery.fn.dataTableExt.oSort['eu_date-desc'] = function(a, b) {
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    71
	x = calculate_date(a);
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    72
	y = calculate_date(b);
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    73
	
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    74
	return ((x < y) ? 1 : ((x > y) ?  -1 : 0));
8f0eddd7aa85 Datatables DSL
Tomas Zeman <tzeman@volny.cz>
parents:
diff changeset
    75
};