blob: d6978a4154c18b7d12f0f78876c09d0dcbc0747d [file] [log] [blame]
(function() {
'use strict';
/**
* @ngdoc service
* @name xos.uiComponents.Comparato
* @description This factory define a function that replace the native angular.filter comparator. It is done to allow the comparation between (0|1) values with booleans.
**/
angular
.module('xos.uiComponents')
.factory('Comparator', comparator);
function comparator() {
return function(actual, expected){
if (angular.isUndefined(actual)) {
// No substring matching against `undefined`
return false;
}
if ((actual === null) || (expected === null)) {
// No substring matching against `null`; only match against `null`
return actual === expected;
}
if (angular.isObject(expected) || (angular.isObject(actual))){
return angular.equals(expected, actual);
}
if(_.isBoolean(actual) || _.isBoolean(expected)){
if(actual === 0 || actual === 1){
actual = !!actual;
}
return angular.equals(expected, actual);
}
if(!angular.isString(actual) || !angular.isString(expected)){
if(angular.isDefined(actual.toString) && angular.isDefined(expected.toString)){
actual = actual.toString();
expected = expected.toString();
}
else {
return actual === expected;
}
}
actual = actual.toLowerCase() + '';
expected = expected.toLowerCase() + '';
return actual.indexOf(expected) !== -1;
};
}
})();