src/ztfy/myams/resources/js/myams-dataTables.js
changeset 136 3ea42c4b9938
parent 107 8d815267d5cb
child 142 0201f1422bd7
--- a/src/ztfy/myams/resources/js/myams-dataTables.js	Tue Oct 13 17:39:09 2015 +0200
+++ b/src/ztfy/myams/resources/js/myams-dataTables.js	Thu Oct 22 13:59:28 2015 +0200
@@ -45,6 +45,89 @@
 
 
 	/**
+	 * Custom sorting plug-in
+	 */
+	$.fn.dataTableExt.aTypes.unshift(
+		function(sData) {
+			if (sData !== null && sData.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-3][0-9]{3}$/)) {
+				return 'date-euro';
+			}
+			return null;
+		}
+	);
+
+	$.fn.dataTableExt.aTypes.unshift(
+		function(sData) {
+			if (sData !== null && sData.match(/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-3][0-9]{3} - ([0-1][0-9]|2[0-3]):[0-5][0-9]$/)) {
+				return 'datetime-euro';
+			}
+			return null;
+		}
+	);
+
+	$.extend($.fn.dataTableExt.oSort, {
+
+		// numeric-comma column sorter
+		"numeric-comma-asc": function(a, b) {
+			var x = a.replace(/,/, ".").replace(/ /g, '');
+			var y = b.replace(/,/, ".").replace(/ /g, '');
+			x = parseFloat(x);
+			y = parseFloat(y);
+			return ((x < y) ? -1 : ((x > y) ?  1 : 0));
+		},
+		"numeric-comma-desc": function(a, b) {
+			var x = a.replace(/,/, ".").replace(/ /g, '');
+			var y = b.replace(/,/, ".").replace(/ /g, '');
+			x = parseFloat(x);
+			y = parseFloat(y);
+			return ((x < y) ?  1 : ((x > y) ? -1 : 0));
+		},
+
+		// date-euro column sorter
+		"date-euro-pre": function(a) {
+			var trimmed = $.trim(a);
+			if (trimmed != '') {
+				var frDate= trimmed.split('/');
+				var x = (frDate[2] + frDate[1] + frDate[0]) * 1;
+			} else {
+				x = 10000000; // = l'an 1000 ...
+			}
+			return x;
+		},
+
+		"date-euro-asc": function(a, b) {
+			return a - b;
+		},
+
+		"date-euro-desc": function(a, b) {
+			return b - a;
+		},
+
+		// datetime-euro column sorter
+		"datetime-euro-pre": function(a) {
+			var trimmed = $.trim(a);
+			if (trimmed != '') {
+				var frDateTime = trimmed.split(' - ');
+				var frDate= frDateTime[0].split('/');
+				var frTime = frDateTime[1].split(':');
+				var x = (frDate[2] + frDate[1] + frDate[0] + frTime[0] + frTime[1]) * 1;
+			} else {
+				x = 100000000000; // = l'an 1000 ...
+			}
+			return x;
+		},
+
+		"datetime-euro-asc": function(a, b) {
+			return a - b;
+		},
+
+		"datetime-euro-desc": function(a, b) {
+			return b - a;
+		}
+	});
+
+
+	/**
 	 * Bootstrap style pagination control
 	 */
 	$.extend($.fn.dataTableExt.oPagination, {