angular-filter
Advanced tools
Comparing version 0.5.1 to 0.5.2
{ | ||
"name": "angular-filter", | ||
"version": "0.5.1", | ||
"version": "0.5.2", | ||
"main": "dist/angular-filter.js", | ||
@@ -5,0 +5,0 @@ "description": "Bunch of useful filters for angularJS(with no external dependencies!)", |
/** | ||
* Bunch of useful filters for angularJS(with no external dependencies!) | ||
* @version v0.5.1 - 2014-11-12 * @link https://github.com/a8m/angular-filter | ||
* @version v0.5.2 - 2015-01-17 * @link https://github.com/a8m/angular-filter | ||
* @author Ariel Mashraki <ariel@mashraki.co.il> | ||
@@ -56,3 +56,3 @@ * @license MIT License, http://www.opensource.org/licenses/MIT | ||
return keys.map(function(el) { | ||
return !(!object[el] || (object[el] != partial[el])); | ||
return (object[el] !== undefined) && (object[el] == partial[el]); | ||
}).indexOf(false) == -1; | ||
@@ -157,2 +157,3 @@ | ||
} | ||
/** | ||
@@ -321,3 +322,2 @@ * @ngdoc filter | ||
*/ | ||
angular.module('a8m.after-where', []) | ||
@@ -327,5 +327,5 @@ .filter('afterWhere', function() { | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -357,11 +357,9 @@ if(!isArray(collection) || isUndefined(object)) | ||
return function (collection, count) { | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
return (isArray(collection)) ? | ||
collection.slice(count) : | ||
collection; | ||
return (isArray(collection)) | ||
? collection.slice(count) | ||
: collection; | ||
} | ||
@@ -380,3 +378,2 @@ }); | ||
*/ | ||
angular.module('a8m.before-where', []) | ||
@@ -386,5 +383,5 @@ .filter('beforeWhere', function() { | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -410,17 +407,13 @@ if(!isArray(collection) || isUndefined(object)) | ||
* in the collection before the specified count. | ||
* | ||
*/ | ||
angular.module('a8m.before', []) | ||
.filter('before', function() { | ||
return function (collection, count) { | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
return (isArray(collection)) ? | ||
collection.slice(0, (!count) ? count : --count) : | ||
collection; | ||
return (isArray(collection)) | ||
? collection.slice(0, (!count) ? count : --count) | ||
: collection; | ||
} | ||
@@ -440,3 +433,3 @@ }); | ||
angular.module('a8m.concat', []) | ||
//TODO:unique option ? or use unique filter to filter result | ||
//TODO(Ariel):unique option ? or use unique filter to filter result | ||
.filter('concat', [function () { | ||
@@ -449,5 +442,5 @@ return function (collection, joined) { | ||
if (isArray(collection)) { | ||
return (isObject(joined)) ? | ||
collection.concat(toArray(joined)) : | ||
collection.concat(joined); | ||
return (isObject(joined)) | ||
? collection.concat(toArray(joined)) | ||
: collection.concat(joined); | ||
} | ||
@@ -457,5 +450,5 @@ | ||
var array = toArray(collection); | ||
return (isObject(joined)) ? | ||
array.concat(toArray(joined)) : | ||
array.concat(joined); | ||
return (isObject(joined)) | ||
? array.concat(toArray(joined)) | ||
: array.concat(joined); | ||
} | ||
@@ -488,11 +481,9 @@ return collection; | ||
if(!isArray(collection) || isUndefined(expression)) { | ||
return true; | ||
return false; | ||
} | ||
return collection.some( function(elm) { | ||
return (isObject(elm) || isFunction(expression)) ? | ||
$parse(expression)(elm) : | ||
elm === expression; | ||
return collection.some(function(elm) { | ||
return (isObject(elm) || isFunction(expression)) | ||
? $parse(expression)(elm) | ||
: elm === expression; | ||
}); | ||
@@ -587,7 +578,5 @@ | ||
*/ | ||
angular.module('a8m.every', []) | ||
.filter('every', ['$parse', function($parse) { | ||
return function (collection, expression) { | ||
collection = (isObject(collection)) ? toArray(collection) : collection; | ||
@@ -600,8 +589,6 @@ | ||
return collection.every( function(elm) { | ||
return (isObject(elm) || isFunction(expression)) ? | ||
$parse(expression)(elm) : | ||
elm === expression; | ||
return (isObject(elm) || isFunction(expression)) | ||
? $parse(expression)(elm) | ||
: elm === expression; | ||
}); | ||
} | ||
@@ -619,3 +606,2 @@ }]); | ||
angular.module('a8m.filter-by', []) | ||
.filter('filterBy', ['$parse', function( $parse ) { | ||
@@ -636,3 +622,2 @@ return function(collection, properties, search) { | ||
return collection.filter(function(elm) { | ||
return properties.some(function(prop) { | ||
@@ -656,9 +641,7 @@ | ||
return (isString(comparator) || isNumber(comparator)) ? | ||
String(comparator).toLowerCase().contains(search) : | ||
false; | ||
}) | ||
return (isString(comparator) || isNumber(comparator)) | ||
? String(comparator).toLowerCase().contains(search) | ||
: false; | ||
}); | ||
}); | ||
} | ||
@@ -677,3 +660,2 @@ }]); | ||
angular.module('a8m.first', []) | ||
.filter('first', ['$parse', function( $parse ) { | ||
@@ -686,4 +668,5 @@ return function(collection) { | ||
collection = (isObject(collection)) ? toArray(collection) : | ||
collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -712,3 +695,2 @@ if(!isArray(collection)) { | ||
*/ | ||
angular.module('a8m.flatten', []) | ||
@@ -719,3 +701,4 @@ .filter('flatten', function () { | ||
shallow = shallow || false; | ||
collection = (isObject(collection)) ? toArray(collection) | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -727,4 +710,5 @@ | ||
return (!shallow) ? flatten(collection, 0) : | ||
[].concat.apply([], collection); | ||
return !shallow | ||
? flatten(collection, 0) | ||
: [].concat.apply([], collection); | ||
} | ||
@@ -761,3 +745,2 @@ }); | ||
*/ | ||
angular.module('a8m.fuzzy-by', []) | ||
@@ -802,3 +785,2 @@ .filter('fuzzyBy', ['$parse', function ( $parse ) { | ||
*/ | ||
angular.module('a8m.fuzzy', []) | ||
@@ -927,2 +909,25 @@ .filter('fuzzy', function () { | ||
* @ngdoc filter | ||
* @name join | ||
* @kind function | ||
* | ||
* @description | ||
* join a collection by a provided delimiter (space by default) | ||
*/ | ||
angular.module('a8m.join', []) | ||
.filter('join', function () { | ||
return function (input, delimiter) { | ||
if (isUndefined(input) || !isArray(input)) { | ||
return input; | ||
} | ||
if (isUndefined(delimiter)) { | ||
delimiter = ' '; | ||
} | ||
return input.join(delimiter); | ||
}; | ||
}) | ||
; | ||
/** | ||
* @ngdoc filter | ||
* @name last | ||
@@ -936,15 +941,15 @@ * @kind function | ||
angular.module('a8m.last', []) | ||
.filter('last', ['$parse', function( $parse ) { | ||
return function(collection) { | ||
var n, | ||
getter, | ||
args, | ||
//cuz reverse change our src collection | ||
//and we don't want side effects | ||
reversed = copy(collection); | ||
var n | ||
, getter | ||
, args | ||
//cuz reverse change our src collection | ||
//and we don't want side effects | ||
, reversed = copy(collection); | ||
reversed = (isObject(reversed)) ? toArray(reversed) : | ||
reversed; | ||
reversed = (isObject(reversed)) | ||
? toArray(reversed) | ||
: reversed; | ||
@@ -975,10 +980,9 @@ if(!isArray(reversed)) { | ||
*/ | ||
angular.module('a8m.map', []) | ||
.filter('map', ['$parse', function($parse) { | ||
return function (collection, expression) { | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -990,3 +994,2 @@ if(!isArray(collection) || isUndefined(expression)) { | ||
return collection.map(function (elm) { | ||
return $parse(expression)(elm); | ||
@@ -1011,4 +1014,5 @@ }); | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -1020,3 +1024,2 @@ if(!isArray(collection) || isUndefined(expression)) { | ||
return collection.filter(function (elm) { | ||
return !($parse(expression)(elm)); | ||
@@ -1041,4 +1044,5 @@ }); | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -1050,3 +1054,2 @@ if(!isArray(collection) || isUndefined(expression)) { | ||
return collection.filter(function (elm) { | ||
return $parse(expression)(elm); | ||
@@ -1074,4 +1077,5 @@ }); | ||
} | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = isObject(collection) | ||
? toArray(collection) | ||
: collection; | ||
@@ -1140,3 +1144,2 @@ return collection.filter(function (elm) { | ||
/** | ||
@@ -1151,5 +1154,3 @@ * @ngdoc filter | ||
*/ | ||
angular.module('a8m.search-field', []) | ||
.filter('searchField', ['$parse', function ($parse) { | ||
@@ -1239,9 +1240,9 @@ return function (collection) { | ||
return (isUndefined(property)) ? | ||
return (isUndefined(property)) | ||
//if it's kind of primitive array | ||
collection.filter(function (elm, pos, self) { | ||
? collection.filter(function (elm, pos, self) { | ||
return self.indexOf(elm) === pos; | ||
}) : | ||
}) | ||
//else compare with equals | ||
collection.filter(function (elm) { | ||
: collection.filter(function (elm) { | ||
var prop = get(elm); | ||
@@ -1264,3 +1265,2 @@ if(some(uniqueItems, prop)) { | ||
} | ||
} | ||
@@ -1279,3 +1279,2 @@ } | ||
*/ | ||
angular.module('a8m.where', []) | ||
@@ -1288,4 +1287,5 @@ .filter('where', function() { | ||
} | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -1327,6 +1327,6 @@ return collection.filter(function (elm) { | ||
return col.some(function(dElm) { | ||
return expression ? | ||
equals(getter(dElm), getter(el)) : | ||
equals(dElm, el); | ||
}) | ||
return expression | ||
? equals(getter(dElm), getter(el)) | ||
: equals(dElm, el); | ||
}); | ||
} | ||
@@ -1920,13 +1920,12 @@ } | ||
*/ | ||
angular.module('a8m.ucfirst', []) | ||
.filter('ucfirst', [function() { | ||
return function(input) { | ||
return angular.isString(input) ? input.split(' ') | ||
.map(function (char) { | ||
return char.charAt(0).toUpperCase() + char.substring(1); | ||
}).join(' ') : input; | ||
if(!isString(input)) { | ||
return input; | ||
} | ||
return input.split(' ').map(function (ch) { | ||
return ch.charAt(0).toUpperCase() + ch.substring(1); | ||
}).join(' '); | ||
} | ||
}]); | ||
@@ -2044,3 +2043,3 @@ | ||
function getHashKey(fName, args) { | ||
return [fName, JSON.stringify(args)] | ||
return [fName, angular.toJson(args)] | ||
.join('#') | ||
@@ -2137,22 +2136,4 @@ .replace(/"/g,''); | ||
}); | ||
/** | ||
@@ -2210,2 +2191,3 @@ * @ngdoc module | ||
'a8m.flatten', | ||
'a8m.join', | ||
@@ -2212,0 +2194,0 @@ 'a8m.math', |
/** | ||
* Bunch of useful filters for angularJS(with no external dependencies!) | ||
* @version v0.5.1 - 2014-11-12 * @link https://github.com/a8m/angular-filter | ||
* @version v0.5.2 - 2015-01-17 * @link https://github.com/a8m/angular-filter | ||
* @author Ariel Mashraki <ariel@mashraki.co.il> | ||
* @license MIT License, http://www.opensource.org/licenses/MIT | ||
*/!function(a,b,c){"use strict";function d(a){return D(a)?a:Object.keys(a).map(function(b){return a[b]})}function e(a){return null===a}function f(a,b){var c=Object.keys(a);return-1==c.map(function(c){return!(!b[c]||b[c]!=a[c])}).indexOf(!1)}function g(a,b){if(""===b)return a;var c=a.indexOf(b.charAt(0));return-1===c?!1:g(a.substr(c+1),b.substr(1))}function h(a,b,c){var d=0;return a.filter(function(a){var e=x(c)?b>d&&c(a):b>d;return d=e?d+1:d,e})}function i(a,b,c){return c.round(a*c.pow(10,b))/c.pow(10,b)}function j(a,b,c){b=b||[];var d=Object.keys(a);return d.forEach(function(d){if(C(a[d])&&!D(a[d])){var e=c?c+"."+d:c;j(a[d],b,e||d)}else{var f=c?c+"."+d:d;b.push(f)}}),b}function k(a){return a&&a.$evalAsync&&a.$watch}function l(){return function(a,b){return a>b}}function m(){return function(a,b){return a>=b}}function n(){return function(a,b){return b>a}}function o(){return function(a,b){return b>=a}}function p(){return function(a,b){return a==b}}function q(){return function(a,b){return a!=b}}function r(){return function(a,b){return a===b}}function s(){return function(a,b){return a!==b}}function t(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?!0:b.some(function(b){return C(b)||z(c)?a(c)(b):b===c})}}function u(a,b){return b=b||0,b>=a.length?a:D(a[b])?u(a.slice(0,b).concat(a[b],a.slice(b+1)),b):u(a,b+1)}function v(a){return function(b,c){function e(a,b){return y(b)?!1:a.some(function(a){return H(a,b)})}if(b=C(b)?d(b):b,!D(b))return b;var f=[],g=a(c);return b.filter(y(c)?function(a,b,c){return c.indexOf(a)===b}:function(a){var b=g(a);return e(f,b)?!1:(f.push(b),!0)})}}function w(a,b,c){return b?a+c+w(a,--b,c):a}var x=b.isDefined,y=b.isUndefined,z=b.isFunction,A=b.isString,B=b.isNumber,C=b.isObject,D=b.isArray,E=b.forEach,F=b.extend,G=b.copy,H=b.equals;String.prototype.contains||(String.prototype.contains=function(){return-1!==String.prototype.indexOf.apply(this,arguments)}),b.module("a8m.angular",[]).filter("isUndefined",function(){return function(a){return b.isUndefined(a)}}).filter("isDefined",function(){return function(a){return b.isDefined(a)}}).filter("isFunction",function(){return function(a){return b.isFunction(a)}}).filter("isString",function(){return function(a){return b.isString(a)}}).filter("isNumber",function(){return function(a){return b.isNumber(a)}}).filter("isArray",function(){return function(a){return b.isArray(a)}}).filter("isObject",function(){return function(a){return b.isObject(a)}}).filter("isEqual",function(){return function(a,c){return b.equals(a,c)}}),b.module("a8m.conditions",[]).filter({isGreaterThan:l,">":l,isGreaterThanOrEqualTo:m,">=":m,isLessThan:n,"<":n,isLessThanOrEqualTo:o,"<=":o,isEqualTo:p,"==":p,isNotEqualTo:q,"!=":q,isIdenticalTo:r,"===":r,isNotIdenticalTo:s,"!==":s}),b.module("a8m.is-null",[]).filter("isNull",function(){return function(a){return e(a)}}),b.module("a8m.after-where",[]).filter("afterWhere",function(){return function(a,b){if(a=C(a)?d(a):a,!D(a)||y(b))return a;var c=a.map(function(a){return f(b,a)}).indexOf(!0);return a.slice(-1===c?0:c)}}),b.module("a8m.after",[]).filter("after",function(){return function(a,b){return a=C(a)?d(a):a,D(a)?a.slice(b):a}}),b.module("a8m.before-where",[]).filter("beforeWhere",function(){return function(a,b){if(a=C(a)?d(a):a,!D(a)||y(b))return a;var c=a.map(function(a){return f(b,a)}).indexOf(!0);return a.slice(0,-1===c?a.length:++c)}}),b.module("a8m.before",[]).filter("before",function(){return function(a,b){return a=C(a)?d(a):a,D(a)?a.slice(0,b?--b:b):a}}),b.module("a8m.concat",[]).filter("concat",[function(){return function(a,b){if(y(b))return a;if(D(a))return a.concat(C(b)?d(b):b);if(C(a)){var c=d(a);return c.concat(C(b)?d(b):b)}return a}}]),b.module("a8m.contains",[]).filter({contains:["$parse",t],some:["$parse",t]}),b.module("a8m.count-by",[]).filter("countBy",["$parse",function(a){return function(b,c){var e,f={},g=a(c);return b=C(b)?d(b):b,!D(b)||y(c)?b:(b.forEach(function(a){e=g(a),f[e]||(f[e]=0),f[e]++}),f)}}]),b.module("a8m.defaults",[]).filter("defaults",["$parse",function(a){return function(b,c){if(b=C(b)?d(b):b,!D(b)||!C(c))return b;var e=j(c);return b.forEach(function(b){e.forEach(function(d){var e=a(d),f=e.assign;y(e(b))&&f(b,e(c))})}),b}}]),b.module("a8m.every",[]).filter("every",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?!0:b.every(function(b){return C(b)||z(c)?a(c)(b):b===c})}}]),b.module("a8m.filter-by",[]).filter("filterBy",["$parse",function(a){return function(b,e,f){var g;return f=A(f)||B(f)?String(f).toLowerCase():c,b=C(b)?d(b):b,!D(b)||y(f)?b:b.filter(function(b){return e.some(function(c){if(~c.indexOf("+")){var d=c.replace(new RegExp("\\s","g"),"").split("+");g=d.reduce(function(c,d,e){return 1===e?a(c)(b)+" "+a(d)(b):c+" "+a(d)(b)})}else g=a(c)(b);return A(g)||B(g)?String(g).toLowerCase().contains(f):!1})})}}]),b.module("a8m.first",[]).filter("first",["$parse",function(a){return function(b){var e,f,g;return b=C(b)?d(b):b,D(b)?(g=Array.prototype.slice.call(arguments,1),e=B(g[0])?g[0]:1,f=B(g[0])?B(g[1])?c:g[1]:g[0],g.length?h(b,e,f?a(f):f):b[0]):b}}]),b.module("a8m.flatten",[]).filter("flatten",function(){return function(a,b){return b=b||!1,a=C(a)?d(a):a,D(a)?b?[].concat.apply([],a):u(a,0):a}}),b.module("a8m.fuzzy-by",[]).filter("fuzzyBy",["$parse",function(a){return function(b,c,e,f){var h,i,j=f||!1;return b=C(b)?d(b):b,!D(b)||y(c)||y(e)?b:(i=a(c),b.filter(function(a){return h=i(a),A(h)?(h=j?h:h.toLowerCase(),e=j?e:e.toLowerCase(),g(h,e)!==!1):!1}))}}]),b.module("a8m.fuzzy",[]).filter("fuzzy",function(){return function(a,b,c){function e(a,b){var c,d,e=Object.keys(a);return 0<e.filter(function(e){return c=a[e],d?!0:A(c)?(c=f?c:c.toLowerCase(),d=g(c,b)!==!1):!1}).length}var f=c||!1;return a=C(a)?d(a):a,!D(a)||y(b)?a:(b=f?b:b.toLowerCase(),a.filter(function(a){return A(a)?(a=f?a:a.toLowerCase(),g(a,b)!==!1):C(a)?e(a,b):!1}))}}),b.module("a8m.group-by",["a8m.filter-watcher"]).filter("groupBy",["$parse","filterWatcher",function(a,b){return function(c,d){function e(a,b){var c,d={};return E(a,function(a){c=b(a),d[c]||(d[c]=[]),d[c].push(a)}),d}if(!C(c)||y(d))return c;var f=a(d);return b.isMemoized("groupBy",arguments)||b.memoize("groupBy",arguments,this,e(c,f))}}]),b.module("a8m.is-empty",[]).filter("isEmpty",function(){return function(a){return C(a)?!d(a).length:!a.length}}),b.module("a8m.last",[]).filter("last",["$parse",function(a){return function(b){var e,f,g,i=G(b);return i=C(i)?d(i):i,D(i)?(g=Array.prototype.slice.call(arguments,1),e=B(g[0])?g[0]:1,f=B(g[0])?B(g[1])?c:g[1]:g[0],g.length?h(i.reverse(),e,f?a(f):f).reverse():i[i.length-1]):i}}]),b.module("a8m.map",[]).filter("map",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?b:b.map(function(b){return a(c)(b)})}}]),b.module("a8m.omit",[]).filter("omit",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?b:b.filter(function(b){return!a(c)(b)})}}]),b.module("a8m.pick",[]).filter("pick",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?b:b.filter(function(b){return a(c)(b)})}}]),b.module("a8m.remove-with",[]).filter("removeWith",function(){return function(a,b){return y(b)?a:(a=C(a)?d(a):a,a.filter(function(a){return!f(b,a)}))}}),b.module("a8m.remove",[]).filter("remove",function(){return function(a){a=C(a)?d(a):a;var b=Array.prototype.slice.call(arguments,1);return D(a)?a.filter(function(a){return!b.some(function(b){return H(b,a)})}):a}}),b.module("a8m.reverse",[]).filter("reverse",[function(){return function(a){return a=C(a)?d(a):a,A(a)?a.split("").reverse().join(""):D(a)?a.slice().reverse():a}}]),b.module("a8m.search-field",[]).filter("searchField",["$parse",function(a){return function(b){var c,e;b=C(b)?d(b):b;var f=Array.prototype.slice.call(arguments,1);return D(b)&&f.length?b.map(function(b){return e=f.map(function(d){return(c=a(d))(b)}).join(" "),F(b,{searchField:e})}):b}}]),b.module("a8m.to-array",[]).filter("toArray",function(){return function(a,b){return C(a)?b?Object.keys(a).map(function(b){return F(a[b],{$key:b})}):d(a):a}}),b.module("a8m.unique",[]).filter({unique:["$parse",v],uniq:["$parse",v]}),b.module("a8m.where",[]).filter("where",function(){return function(a,b){return y(b)?a:(a=C(a)?d(a):a,a.filter(function(a){return f(b,a)}))}}),b.module("a8m.xor",[]).filter("xor",["$parse",function(a){return function(b,c,e){function f(b,c){var d=a(e);return c.some(function(a){return e?H(d(a),d(b)):H(a,b)})}return e=e||!1,b=C(b)?d(b):b,c=C(c)?d(c):c,D(b)&&D(c)?b.concat(c).filter(function(a){return!(f(a,b)&&f(a,c))}):b}}]),b.module("a8m.math.byteFmt",["a8m.math"]).filter("byteFmt",["$math",function(a){return function(b,c){return B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)?1024>b?i(b,c,a)+" B":1048576>b?i(b/1024,c,a)+" KB":1073741824>b?i(b/1048576,c,a)+" MB":i(b/1073741824,c,a)+" GB":"NaN"}}]),b.module("a8m.math.degrees",["a8m.math"]).filter("degrees",["$math",function(a){return function(b,c){if(B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)){var d=180*b/a.PI;return a.round(d*a.pow(10,c))/a.pow(10,c)}return"NaN"}}]),b.module("a8m.math.kbFmt",["a8m.math"]).filter("kbFmt",["$math",function(a){return function(b,c){return B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)?1024>b?i(b,c,a)+" KB":1048576>b?i(b/1024,c,a)+" MB":i(b/1048576,c,a)+" GB":"NaN"}}]),b.module("a8m.math",[]).factory("$math",["$window",function(a){return a.Math}]),b.module("a8m.math.max",["a8m.math"]).filter("max",["$math","$parse",function(a,b){function c(c,d){var e=c.map(function(a){return b(d)(a)});return e.indexOf(a.max.apply(a,e))}return function(b,d){return D(b)?y(d)?a.max.apply(a,b):b[c(b,d)]:b}}]),b.module("a8m.math.min",["a8m.math"]).filter("min",["$math","$parse",function(a,b){function c(c,d){var e=c.map(function(a){return b(d)(a)});return e.indexOf(a.min.apply(a,e))}return function(b,d){return D(b)?y(d)?a.min.apply(a,b):b[c(b,d)]:b}}]),b.module("a8m.math.percent",["a8m.math"]).filter("percent",["$math","$window",function(a,b){return function(c,d,e){var f=A(c)?b.Number(c):c;return d=d||100,e=e||!1,!B(f)||b.isNaN(f)?c:e?a.round(f/d*100):f/d*100}}]),b.module("a8m.math.radians",["a8m.math"]).filter("radians",["$math",function(a){return function(b,c){if(B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)){var d=3.14159265359*b/180;return a.round(d*a.pow(10,c))/a.pow(10,c)}return"NaN"}}]),b.module("a8m.math.radix",[]).filter("radix",function(){return function(a,b){var c=/^[2-9]$|^[1-2]\d$|^3[0-6]$/;return B(a)&&c.test(b)?a.toString(b).toUpperCase():a}}),b.module("a8m.math.shortFmt",["a8m.math"]).filter("shortFmt",["$math",function(a){return function(b,c){return B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)?1e3>b?b:1e6>b?i(b/1e3,c,a)+" K":1e9>b?i(b/1e6,c,a)+" M":i(b/1e9,c,a)+" B":"NaN"}}]),b.module("a8m.math.sum",[]).filter("sum",function(){return function(a,b){return D(a)?a.reduce(function(a,b){return a+b},b||0):a}}),b.module("a8m.ends-with",[]).filter("endsWith",function(){return function(a,b,c){var d,e=c||!1;return!A(a)||y(b)?a:(a=e?a:a.toLowerCase(),d=a.length-b.length,-1!==a.indexOf(e?b:b.toLowerCase(),d))}}),b.module("a8m.ltrim",[]).filter("ltrim",function(){return function(a,b){var c=b||"\\s";return A(a)?a.replace(new RegExp("^"+c+"+"),""):a}}),b.module("a8m.repeat",[]).filter("repeat",[function(){return function(a,b,c){var d=~~b;return A(a)&&d?w(a,--b,c||""):a}}]),b.module("a8m.rtrim",[]).filter("rtrim",function(){return function(a,b){var c=b||"\\s";return A(a)?a.replace(new RegExp(c+"+$"),""):a}}),b.module("a8m.slugify",[]).filter("slugify",[function(){return function(a,b){var c=y(b)?"-":b;return A(a)?a.toLowerCase().replace(/\s+/g,c):a}}]),b.module("a8m.starts-with",[]).filter("startsWith",function(){return function(a,b,c){var d=c||!1;return!A(a)||y(b)?a:(a=d?a:a.toLowerCase(),!a.indexOf(d?b:b.toLowerCase()))}}),b.module("a8m.stringular",[]).filter("stringular",function(){return function(a){var b=Array.prototype.slice.call(arguments,1);return a.replace(/{(\d+)}/g,function(a,c){return y(b[c])?a:b[c]})}}),b.module("a8m.strip-tags",[]).filter("stripTags",function(){return function(a){return A(a)?a.replace(/<\S[^><]*>/g,""):a}}),b.module("a8m.trim",[]).filter("trim",function(){return function(a,b){var c=b||"\\s";return A(a)?a.replace(new RegExp("^"+c+"+|"+c+"+$","g"),""):a}}),b.module("a8m.truncate",[]).filter("truncate",function(){return function(a,b,c,d){return b=y(b)?a.length:b,d=d||!1,c=c||"",!A(a)||a.length<=b?a:a.substring(0,d?-1===a.indexOf(" ",b)?a.length:a.indexOf(" ",b):b)+c}}),b.module("a8m.ucfirst",[]).filter("ucfirst",[function(){return function(a){return b.isString(a)?a.split(" ").map(function(a){return a.charAt(0).toUpperCase()+a.substring(1)}).join(" "):a}}]),b.module("a8m.uri-component-encode",[]).filter("uriComponentEncode",["$window",function(a){return function(b){return A(b)?a.encodeURIComponent(b):b}}]),b.module("a8m.uri-encode",[]).filter("uriEncode",["$window",function(a){return function(b){return A(b)?a.encodeURI(b):b}}]),b.module("a8m.wrap",[]).filter("wrap",function(){return function(a,b,c){return!A(a)||y(b)?a:[b,a,c||b].join("")}}),b.module("a8m.filter-watcher",[]).provider("filterWatcher",function(){this.$get=["$window","$rootScope",function(a,b){function c(a,b){return[a,JSON.stringify(b)].join("#").replace(/"/g,"")}function d(a){var b=a.targetScope.$id;E(j[b],function(a){delete i[a]}),delete j[b]}function e(){l(function(){b.$$phase||(i={})})}function f(a,b){var c=a.$id;return y(j[c])&&(a.$on("$destroy",d),j[c]=[]),j[c].push(b)}function g(a,b){var d=c(a,b);return i[d]}function h(a,b,d,g){var h=c(a,b);return i[h]=g,k(d)?f(d,h):e(),g}var i={},j={},l=a.setTimeout;return{isMemoized:g,memoize:h}}]}),b.module("angular.filter",["a8m.ucfirst","a8m.uri-encode","a8m.uri-component-encode","a8m.slugify","a8m.strip-tags","a8m.stringular","a8m.truncate","a8m.starts-with","a8m.ends-with","a8m.wrap","a8m.trim","a8m.ltrim","a8m.rtrim","a8m.repeat","a8m.to-array","a8m.concat","a8m.contains","a8m.unique","a8m.is-empty","a8m.after","a8m.after-where","a8m.before","a8m.before-where","a8m.defaults","a8m.where","a8m.reverse","a8m.remove","a8m.remove-with","a8m.group-by","a8m.count-by","a8m.search-field","a8m.fuzzy-by","a8m.fuzzy","a8m.omit","a8m.pick","a8m.every","a8m.filter-by","a8m.xor","a8m.map","a8m.first","a8m.last","a8m.flatten","a8m.math","a8m.math.max","a8m.math.min","a8m.math.percent","a8m.math.radix","a8m.math.sum","a8m.math.degrees","a8m.math.radians","a8m.math.byteFmt","a8m.math.kbFmt","a8m.math.shortFmt","a8m.angular","a8m.conditions","a8m.is-null","a8m.filter-watcher"])}(window,window.angular); | ||
*/!function(a,b,c){"use strict";function d(a){return D(a)?a:Object.keys(a).map(function(b){return a[b]})}function e(a){return null===a}function f(a,b){var d=Object.keys(a);return-1==d.map(function(d){return b[d]!==c&&b[d]==a[d]}).indexOf(!1)}function g(a,b){if(""===b)return a;var c=a.indexOf(b.charAt(0));return-1===c?!1:g(a.substr(c+1),b.substr(1))}function h(a,b,c){var d=0;return a.filter(function(a){var e=x(c)?b>d&&c(a):b>d;return d=e?d+1:d,e})}function i(a,b,c){return c.round(a*c.pow(10,b))/c.pow(10,b)}function j(a,b,c){b=b||[];var d=Object.keys(a);return d.forEach(function(d){if(C(a[d])&&!D(a[d])){var e=c?c+"."+d:c;j(a[d],b,e||d)}else{var f=c?c+"."+d:d;b.push(f)}}),b}function k(a){return a&&a.$evalAsync&&a.$watch}function l(){return function(a,b){return a>b}}function m(){return function(a,b){return a>=b}}function n(){return function(a,b){return b>a}}function o(){return function(a,b){return b>=a}}function p(){return function(a,b){return a==b}}function q(){return function(a,b){return a!=b}}function r(){return function(a,b){return a===b}}function s(){return function(a,b){return a!==b}}function t(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?!1:b.some(function(b){return C(b)||z(c)?a(c)(b):b===c})}}function u(a,b){return b=b||0,b>=a.length?a:D(a[b])?u(a.slice(0,b).concat(a[b],a.slice(b+1)),b):u(a,b+1)}function v(a){return function(b,c){function e(a,b){return y(b)?!1:a.some(function(a){return H(a,b)})}if(b=C(b)?d(b):b,!D(b))return b;var f=[],g=a(c);return b.filter(y(c)?function(a,b,c){return c.indexOf(a)===b}:function(a){var b=g(a);return e(f,b)?!1:(f.push(b),!0)})}}function w(a,b,c){return b?a+c+w(a,--b,c):a}var x=b.isDefined,y=b.isUndefined,z=b.isFunction,A=b.isString,B=b.isNumber,C=b.isObject,D=b.isArray,E=b.forEach,F=b.extend,G=b.copy,H=b.equals;String.prototype.contains||(String.prototype.contains=function(){return-1!==String.prototype.indexOf.apply(this,arguments)}),b.module("a8m.angular",[]).filter("isUndefined",function(){return function(a){return b.isUndefined(a)}}).filter("isDefined",function(){return function(a){return b.isDefined(a)}}).filter("isFunction",function(){return function(a){return b.isFunction(a)}}).filter("isString",function(){return function(a){return b.isString(a)}}).filter("isNumber",function(){return function(a){return b.isNumber(a)}}).filter("isArray",function(){return function(a){return b.isArray(a)}}).filter("isObject",function(){return function(a){return b.isObject(a)}}).filter("isEqual",function(){return function(a,c){return b.equals(a,c)}}),b.module("a8m.conditions",[]).filter({isGreaterThan:l,">":l,isGreaterThanOrEqualTo:m,">=":m,isLessThan:n,"<":n,isLessThanOrEqualTo:o,"<=":o,isEqualTo:p,"==":p,isNotEqualTo:q,"!=":q,isIdenticalTo:r,"===":r,isNotIdenticalTo:s,"!==":s}),b.module("a8m.is-null",[]).filter("isNull",function(){return function(a){return e(a)}}),b.module("a8m.after-where",[]).filter("afterWhere",function(){return function(a,b){if(a=C(a)?d(a):a,!D(a)||y(b))return a;var c=a.map(function(a){return f(b,a)}).indexOf(!0);return a.slice(-1===c?0:c)}}),b.module("a8m.after",[]).filter("after",function(){return function(a,b){return a=C(a)?d(a):a,D(a)?a.slice(b):a}}),b.module("a8m.before-where",[]).filter("beforeWhere",function(){return function(a,b){if(a=C(a)?d(a):a,!D(a)||y(b))return a;var c=a.map(function(a){return f(b,a)}).indexOf(!0);return a.slice(0,-1===c?a.length:++c)}}),b.module("a8m.before",[]).filter("before",function(){return function(a,b){return a=C(a)?d(a):a,D(a)?a.slice(0,b?--b:b):a}}),b.module("a8m.concat",[]).filter("concat",[function(){return function(a,b){if(y(b))return a;if(D(a))return a.concat(C(b)?d(b):b);if(C(a)){var c=d(a);return c.concat(C(b)?d(b):b)}return a}}]),b.module("a8m.contains",[]).filter({contains:["$parse",t],some:["$parse",t]}),b.module("a8m.count-by",[]).filter("countBy",["$parse",function(a){return function(b,c){var e,f={},g=a(c);return b=C(b)?d(b):b,!D(b)||y(c)?b:(b.forEach(function(a){e=g(a),f[e]||(f[e]=0),f[e]++}),f)}}]),b.module("a8m.defaults",[]).filter("defaults",["$parse",function(a){return function(b,c){if(b=C(b)?d(b):b,!D(b)||!C(c))return b;var e=j(c);return b.forEach(function(b){e.forEach(function(d){var e=a(d),f=e.assign;y(e(b))&&f(b,e(c))})}),b}}]),b.module("a8m.every",[]).filter("every",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?!0:b.every(function(b){return C(b)||z(c)?a(c)(b):b===c})}}]),b.module("a8m.filter-by",[]).filter("filterBy",["$parse",function(a){return function(b,e,f){var g;return f=A(f)||B(f)?String(f).toLowerCase():c,b=C(b)?d(b):b,!D(b)||y(f)?b:b.filter(function(b){return e.some(function(c){if(~c.indexOf("+")){var d=c.replace(new RegExp("\\s","g"),"").split("+");g=d.reduce(function(c,d,e){return 1===e?a(c)(b)+" "+a(d)(b):c+" "+a(d)(b)})}else g=a(c)(b);return A(g)||B(g)?String(g).toLowerCase().contains(f):!1})})}}]),b.module("a8m.first",[]).filter("first",["$parse",function(a){return function(b){var e,f,g;return b=C(b)?d(b):b,D(b)?(g=Array.prototype.slice.call(arguments,1),e=B(g[0])?g[0]:1,f=B(g[0])?B(g[1])?c:g[1]:g[0],g.length?h(b,e,f?a(f):f):b[0]):b}}]),b.module("a8m.flatten",[]).filter("flatten",function(){return function(a,b){return b=b||!1,a=C(a)?d(a):a,D(a)?b?[].concat.apply([],a):u(a,0):a}}),b.module("a8m.fuzzy-by",[]).filter("fuzzyBy",["$parse",function(a){return function(b,c,e,f){var h,i,j=f||!1;return b=C(b)?d(b):b,!D(b)||y(c)||y(e)?b:(i=a(c),b.filter(function(a){return h=i(a),A(h)?(h=j?h:h.toLowerCase(),e=j?e:e.toLowerCase(),g(h,e)!==!1):!1}))}}]),b.module("a8m.fuzzy",[]).filter("fuzzy",function(){return function(a,b,c){function e(a,b){var c,d,e=Object.keys(a);return 0<e.filter(function(e){return c=a[e],d?!0:A(c)?(c=f?c:c.toLowerCase(),d=g(c,b)!==!1):!1}).length}var f=c||!1;return a=C(a)?d(a):a,!D(a)||y(b)?a:(b=f?b:b.toLowerCase(),a.filter(function(a){return A(a)?(a=f?a:a.toLowerCase(),g(a,b)!==!1):C(a)?e(a,b):!1}))}}),b.module("a8m.group-by",["a8m.filter-watcher"]).filter("groupBy",["$parse","filterWatcher",function(a,b){return function(c,d){function e(a,b){var c,d={};return E(a,function(a){c=b(a),d[c]||(d[c]=[]),d[c].push(a)}),d}if(!C(c)||y(d))return c;var f=a(d);return b.isMemoized("groupBy",arguments)||b.memoize("groupBy",arguments,this,e(c,f))}}]),b.module("a8m.is-empty",[]).filter("isEmpty",function(){return function(a){return C(a)?!d(a).length:!a.length}}),b.module("a8m.join",[]).filter("join",function(){return function(a,b){return y(a)||!D(a)?a:(y(b)&&(b=" "),a.join(b))}}),b.module("a8m.last",[]).filter("last",["$parse",function(a){return function(b){var e,f,g,i=G(b);return i=C(i)?d(i):i,D(i)?(g=Array.prototype.slice.call(arguments,1),e=B(g[0])?g[0]:1,f=B(g[0])?B(g[1])?c:g[1]:g[0],g.length?h(i.reverse(),e,f?a(f):f).reverse():i[i.length-1]):i}}]),b.module("a8m.map",[]).filter("map",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?b:b.map(function(b){return a(c)(b)})}}]),b.module("a8m.omit",[]).filter("omit",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?b:b.filter(function(b){return!a(c)(b)})}}]),b.module("a8m.pick",[]).filter("pick",["$parse",function(a){return function(b,c){return b=C(b)?d(b):b,!D(b)||y(c)?b:b.filter(function(b){return a(c)(b)})}}]),b.module("a8m.remove-with",[]).filter("removeWith",function(){return function(a,b){return y(b)?a:(a=C(a)?d(a):a,a.filter(function(a){return!f(b,a)}))}}),b.module("a8m.remove",[]).filter("remove",function(){return function(a){a=C(a)?d(a):a;var b=Array.prototype.slice.call(arguments,1);return D(a)?a.filter(function(a){return!b.some(function(b){return H(b,a)})}):a}}),b.module("a8m.reverse",[]).filter("reverse",[function(){return function(a){return a=C(a)?d(a):a,A(a)?a.split("").reverse().join(""):D(a)?a.slice().reverse():a}}]),b.module("a8m.search-field",[]).filter("searchField",["$parse",function(a){return function(b){var c,e;b=C(b)?d(b):b;var f=Array.prototype.slice.call(arguments,1);return D(b)&&f.length?b.map(function(b){return e=f.map(function(d){return(c=a(d))(b)}).join(" "),F(b,{searchField:e})}):b}}]),b.module("a8m.to-array",[]).filter("toArray",function(){return function(a,b){return C(a)?b?Object.keys(a).map(function(b){return F(a[b],{$key:b})}):d(a):a}}),b.module("a8m.unique",[]).filter({unique:["$parse",v],uniq:["$parse",v]}),b.module("a8m.where",[]).filter("where",function(){return function(a,b){return y(b)?a:(a=C(a)?d(a):a,a.filter(function(a){return f(b,a)}))}}),b.module("a8m.xor",[]).filter("xor",["$parse",function(a){return function(b,c,e){function f(b,c){var d=a(e);return c.some(function(a){return e?H(d(a),d(b)):H(a,b)})}return e=e||!1,b=C(b)?d(b):b,c=C(c)?d(c):c,D(b)&&D(c)?b.concat(c).filter(function(a){return!(f(a,b)&&f(a,c))}):b}}]),b.module("a8m.math.byteFmt",["a8m.math"]).filter("byteFmt",["$math",function(a){return function(b,c){return B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)?1024>b?i(b,c,a)+" B":1048576>b?i(b/1024,c,a)+" KB":1073741824>b?i(b/1048576,c,a)+" MB":i(b/1073741824,c,a)+" GB":"NaN"}}]),b.module("a8m.math.degrees",["a8m.math"]).filter("degrees",["$math",function(a){return function(b,c){if(B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)){var d=180*b/a.PI;return a.round(d*a.pow(10,c))/a.pow(10,c)}return"NaN"}}]),b.module("a8m.math.kbFmt",["a8m.math"]).filter("kbFmt",["$math",function(a){return function(b,c){return B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)?1024>b?i(b,c,a)+" KB":1048576>b?i(b/1024,c,a)+" MB":i(b/1048576,c,a)+" GB":"NaN"}}]),b.module("a8m.math",[]).factory("$math",["$window",function(a){return a.Math}]),b.module("a8m.math.max",["a8m.math"]).filter("max",["$math","$parse",function(a,b){function c(c,d){var e=c.map(function(a){return b(d)(a)});return e.indexOf(a.max.apply(a,e))}return function(b,d){return D(b)?y(d)?a.max.apply(a,b):b[c(b,d)]:b}}]),b.module("a8m.math.min",["a8m.math"]).filter("min",["$math","$parse",function(a,b){function c(c,d){var e=c.map(function(a){return b(d)(a)});return e.indexOf(a.min.apply(a,e))}return function(b,d){return D(b)?y(d)?a.min.apply(a,b):b[c(b,d)]:b}}]),b.module("a8m.math.percent",["a8m.math"]).filter("percent",["$math","$window",function(a,b){return function(c,d,e){var f=A(c)?b.Number(c):c;return d=d||100,e=e||!1,!B(f)||b.isNaN(f)?c:e?a.round(f/d*100):f/d*100}}]),b.module("a8m.math.radians",["a8m.math"]).filter("radians",["$math",function(a){return function(b,c){if(B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)){var d=3.14159265359*b/180;return a.round(d*a.pow(10,c))/a.pow(10,c)}return"NaN"}}]),b.module("a8m.math.radix",[]).filter("radix",function(){return function(a,b){var c=/^[2-9]$|^[1-2]\d$|^3[0-6]$/;return B(a)&&c.test(b)?a.toString(b).toUpperCase():a}}),b.module("a8m.math.shortFmt",["a8m.math"]).filter("shortFmt",["$math",function(a){return function(b,c){return B(c)&&isFinite(c)&&c%1===0&&c>=0&&B(b)&&isFinite(b)?1e3>b?b:1e6>b?i(b/1e3,c,a)+" K":1e9>b?i(b/1e6,c,a)+" M":i(b/1e9,c,a)+" B":"NaN"}}]),b.module("a8m.math.sum",[]).filter("sum",function(){return function(a,b){return D(a)?a.reduce(function(a,b){return a+b},b||0):a}}),b.module("a8m.ends-with",[]).filter("endsWith",function(){return function(a,b,c){var d,e=c||!1;return!A(a)||y(b)?a:(a=e?a:a.toLowerCase(),d=a.length-b.length,-1!==a.indexOf(e?b:b.toLowerCase(),d))}}),b.module("a8m.ltrim",[]).filter("ltrim",function(){return function(a,b){var c=b||"\\s";return A(a)?a.replace(new RegExp("^"+c+"+"),""):a}}),b.module("a8m.repeat",[]).filter("repeat",[function(){return function(a,b,c){var d=~~b;return A(a)&&d?w(a,--b,c||""):a}}]),b.module("a8m.rtrim",[]).filter("rtrim",function(){return function(a,b){var c=b||"\\s";return A(a)?a.replace(new RegExp(c+"+$"),""):a}}),b.module("a8m.slugify",[]).filter("slugify",[function(){return function(a,b){var c=y(b)?"-":b;return A(a)?a.toLowerCase().replace(/\s+/g,c):a}}]),b.module("a8m.starts-with",[]).filter("startsWith",function(){return function(a,b,c){var d=c||!1;return!A(a)||y(b)?a:(a=d?a:a.toLowerCase(),!a.indexOf(d?b:b.toLowerCase()))}}),b.module("a8m.stringular",[]).filter("stringular",function(){return function(a){var b=Array.prototype.slice.call(arguments,1);return a.replace(/{(\d+)}/g,function(a,c){return y(b[c])?a:b[c]})}}),b.module("a8m.strip-tags",[]).filter("stripTags",function(){return function(a){return A(a)?a.replace(/<\S[^><]*>/g,""):a}}),b.module("a8m.trim",[]).filter("trim",function(){return function(a,b){var c=b||"\\s";return A(a)?a.replace(new RegExp("^"+c+"+|"+c+"+$","g"),""):a}}),b.module("a8m.truncate",[]).filter("truncate",function(){return function(a,b,c,d){return b=y(b)?a.length:b,d=d||!1,c=c||"",!A(a)||a.length<=b?a:a.substring(0,d?-1===a.indexOf(" ",b)?a.length:a.indexOf(" ",b):b)+c}}),b.module("a8m.ucfirst",[]).filter("ucfirst",[function(){return function(a){return A(a)?a.split(" ").map(function(a){return a.charAt(0).toUpperCase()+a.substring(1)}).join(" "):a}}]),b.module("a8m.uri-component-encode",[]).filter("uriComponentEncode",["$window",function(a){return function(b){return A(b)?a.encodeURIComponent(b):b}}]),b.module("a8m.uri-encode",[]).filter("uriEncode",["$window",function(a){return function(b){return A(b)?a.encodeURI(b):b}}]),b.module("a8m.wrap",[]).filter("wrap",function(){return function(a,b,c){return!A(a)||y(b)?a:[b,a,c||b].join("")}}),b.module("a8m.filter-watcher",[]).provider("filterWatcher",function(){this.$get=["$window","$rootScope",function(a,c){function d(a,c){return[a,b.toJson(c)].join("#").replace(/"/g,"")}function e(a){var b=a.targetScope.$id;E(l[b],function(a){delete j[a]}),delete l[b]}function f(){m(function(){c.$$phase||(j={})})}function g(a,b){var c=a.$id;return y(l[c])&&(a.$on("$destroy",e),l[c]=[]),l[c].push(b)}function h(a,b){var c=d(a,b);return j[c]}function i(a,b,c,e){var h=d(a,b);return j[h]=e,k(c)?g(c,h):f(),e}var j={},l={},m=a.setTimeout;return{isMemoized:h,memoize:i}}]}),b.module("angular.filter",["a8m.ucfirst","a8m.uri-encode","a8m.uri-component-encode","a8m.slugify","a8m.strip-tags","a8m.stringular","a8m.truncate","a8m.starts-with","a8m.ends-with","a8m.wrap","a8m.trim","a8m.ltrim","a8m.rtrim","a8m.repeat","a8m.to-array","a8m.concat","a8m.contains","a8m.unique","a8m.is-empty","a8m.after","a8m.after-where","a8m.before","a8m.before-where","a8m.defaults","a8m.where","a8m.reverse","a8m.remove","a8m.remove-with","a8m.group-by","a8m.count-by","a8m.search-field","a8m.fuzzy-by","a8m.fuzzy","a8m.omit","a8m.pick","a8m.every","a8m.filter-by","a8m.xor","a8m.map","a8m.first","a8m.last","a8m.flatten","a8m.join","a8m.math","a8m.math.max","a8m.math.min","a8m.math.percent","a8m.math.radix","a8m.math.sum","a8m.math.degrees","a8m.math.radians","a8m.math.byteFmt","a8m.math.kbFmt","a8m.math.shortFmt","a8m.angular","a8m.conditions","a8m.is-null","a8m.filter-watcher"])}(window,window.angular); |
The MIT License | ||
Copyright (c) 2014 Ariel Mashraki | ||
Copyright (c) 2015 Ariel Mashraki | ||
@@ -21,2 +21,2 @@ Permission is hereby granted, free of charge, to any person obtaining a copy | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
THE SOFTWARE. | ||
THE SOFTWARE. |
{ | ||
"name": "angular-filter", | ||
"description": "Bunch of useful filters for angularJS(with no external dependencies!)", | ||
"version": "0.5.1", | ||
"version": "0.5.2", | ||
"filename": "angular-filter.min.js", | ||
@@ -6,0 +6,0 @@ "main": "dist/angular-filter.min.js", |
@@ -1,2 +0,2 @@ | ||
#Angular-filter [](https://travis-ci.org/a8m/angular-filter) [](https://coveralls.io/r/a8m/angular-filter?branch=master) | ||
#Angular-filter [![NPM version][npm-image]][npm-url] [![Build status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] [![License][license-image]][license-url] | ||
>Bunch of useful filters for AngularJS (with no external dependencies!), **v0.5.1** | ||
@@ -29,2 +29,3 @@ | ||
- [isEmpty](#isempty) | ||
- [join] (#join) | ||
- [last](#last) | ||
@@ -92,3 +93,3 @@ - [map](#map) | ||
**(1)** You can install angular-filter using 4 different methods: | ||
- clone & [build](#developing) this repository | ||
- clone & [build](#Contributing) this repository | ||
- via **[Bower](http://bower.io/)**: by running `$ bower install angular-filter` from your terminal | ||
@@ -346,2 +347,21 @@ - via **[npm](https://www.npmjs.org/)**: by running `$ npm install angular-filter` from your terminal | ||
### join | ||
Joins the contents of a collection into a string.<br/> | ||
By default, it will join elements with a *single space*, but you can provide your own delimiter. | ||
**Usage:** ```collection | join:', '``` | ||
Example: | ||
```js | ||
$scope.names = ['John', 'Sebastian', 'Will', 'James']; | ||
``` | ||
```html | ||
<p>{{ names | join:', ' }}</p> | ||
<!-- Will print "John, Sebastian, Will, James" --> | ||
``` | ||
###fuzzy | ||
@@ -406,6 +426,10 @@ fuzzy string searching(approximate string matching). [Read more](http://en.wikipedia.org/wiki/Approximate_string_matching)<br/> | ||
```html | ||
<ul ng-repeat="(key, value) in players | groupBy: 'team'" > | ||
Group name: {{ key }} | ||
<li ng-repeat="player in value"> | ||
player: {{ player.name }} | ||
<ul> | ||
<li ng-repeat="(key, value) in players | groupBy: 'team'"> | ||
Group name: {{ key }} | ||
<ul> | ||
<li ng-repeat="player in value"> | ||
player: {{ player.name }} | ||
</li> | ||
</ul> | ||
</li> | ||
@@ -437,5 +461,5 @@ </ul> | ||
```html | ||
<ul ng-repeat="(key, value) in players | countBy: 'team'" > | ||
<li ng-repeat="(key, value) in players | countBy: 'team'" > | ||
Group name: {{ key }}, length: {{ value }} | ||
</ul> | ||
</li> | ||
<!-- result: | ||
@@ -474,3 +498,3 @@ Group name: alpha, length: 1 | ||
**Note:** `defaultsFilter` change the source object.<br/> | ||
**Why?** if we not change the source object, it's actually means we gonna return **new** boject(copy operation) **each digest cycle**.<br/> | ||
**Why?** if we not change the source object, it's actually means we gonna return **new** object(copy operation) **each digest cycle**.<br/> | ||
And it will cause adverse memory and performance implications.<br/> | ||
@@ -748,3 +772,3 @@ **How to avoid it?** see below | ||
###isEmpty | ||
get collection or string and return if it empty[Bollean] | ||
get collection or string and return if it empty[Boolean] | ||
@@ -847,3 +871,3 @@ ```html | ||
**Usage:** ```object | toArray: addKey[optional]```<br/> | ||
if addKey set to true,the filter also attaches a new property $key to the value containing the original key that was used in the object we are iterating over to reference the property | ||
if addKey set to true, the filter also attaches a new property $key to the value containing the original key that was used in the object we are iterating over to reference the property | ||
```html | ||
@@ -1287,1 +1311,9 @@ <th ng-repeat="elm in object | toArray | orderBy: 'property'"> | ||
``` | ||
[npm-image]: https://img.shields.io/npm/v/angular-filter.svg?style=flat-square | ||
[npm-url]: https://npmjs.org/package/angular-filter | ||
[travis-image]: https://img.shields.io/travis/a8m/angular-filter.svg?style=flat-square | ||
[travis-url]: https://travis-ci.org/a8m/angular-filter | ||
[coveralls-image]: https://img.shields.io/coveralls/a8m/angular-filter.svg?style=flat-square | ||
[coveralls-url]: https://coveralls.io/r/a8m/angular-filter | ||
[license-image]: http://img.shields.io/npm/l/angular-filter.svg?style=flat-square | ||
[license-url]: LICENSE |
@@ -49,3 +49,3 @@ /*jshint globalstrict:true*/ | ||
return keys.map(function(el) { | ||
return !(!object[el] || (object[el] != partial[el])); | ||
return (object[el] !== undefined) && (object[el] == partial[el]); | ||
}).indexOf(false) == -1; | ||
@@ -149,2 +149,2 @@ | ||
return obj && obj.$evalAsync && obj.$watch; | ||
} | ||
} |
@@ -11,3 +11,2 @@ /** | ||
*/ | ||
angular.module('a8m.after-where', []) | ||
@@ -17,5 +16,5 @@ .filter('afterWhere', function() { | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -22,0 +21,0 @@ if(!isArray(collection) || isUndefined(object)) |
@@ -15,12 +15,10 @@ /** | ||
return function (collection, count) { | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
return (isArray(collection)) ? | ||
collection.slice(count) : | ||
collection; | ||
return (isArray(collection)) | ||
? collection.slice(count) | ||
: collection; | ||
} | ||
}); |
@@ -11,3 +11,2 @@ /** | ||
*/ | ||
angular.module('a8m.before-where', []) | ||
@@ -17,5 +16,5 @@ .filter('beforeWhere', function() { | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -22,0 +21,0 @@ if(!isArray(collection) || isUndefined(object)) |
@@ -9,18 +9,14 @@ /** | ||
* in the collection before the specified count. | ||
* | ||
*/ | ||
angular.module('a8m.before', []) | ||
.filter('before', function() { | ||
return function (collection, count) { | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : | ||
collection; | ||
return (isArray(collection)) ? | ||
collection.slice(0, (!count) ? count : --count) : | ||
collection; | ||
return (isArray(collection)) | ||
? collection.slice(0, (!count) ? count : --count) | ||
: collection; | ||
} | ||
}); |
@@ -12,3 +12,3 @@ /** | ||
angular.module('a8m.concat', []) | ||
//TODO:unique option ? or use unique filter to filter result | ||
//TODO(Ariel):unique option ? or use unique filter to filter result | ||
.filter('concat', [function () { | ||
@@ -21,5 +21,5 @@ return function (collection, joined) { | ||
if (isArray(collection)) { | ||
return (isObject(joined)) ? | ||
collection.concat(toArray(joined)) : | ||
collection.concat(joined); | ||
return (isObject(joined)) | ||
? collection.concat(toArray(joined)) | ||
: collection.concat(joined); | ||
} | ||
@@ -29,5 +29,5 @@ | ||
var array = toArray(collection); | ||
return (isObject(joined)) ? | ||
array.concat(toArray(joined)) : | ||
array.concat(joined); | ||
return (isObject(joined)) | ||
? array.concat(toArray(joined)) | ||
: array.concat(joined); | ||
} | ||
@@ -34,0 +34,0 @@ return collection; |
@@ -22,11 +22,9 @@ /** | ||
if(!isArray(collection) || isUndefined(expression)) { | ||
return true; | ||
return false; | ||
} | ||
return collection.some( function(elm) { | ||
return (isObject(elm) || isFunction(expression)) ? | ||
$parse(expression)(elm) : | ||
elm === expression; | ||
return collection.some(function(elm) { | ||
return (isObject(elm) || isFunction(expression)) | ||
? $parse(expression)(elm) | ||
: elm === expression; | ||
}); | ||
@@ -33,0 +31,0 @@ |
@@ -10,7 +10,5 @@ /** | ||
*/ | ||
angular.module('a8m.every', []) | ||
.filter('every', ['$parse', function($parse) { | ||
return function (collection, expression) { | ||
collection = (isObject(collection)) ? toArray(collection) : collection; | ||
@@ -23,9 +21,7 @@ | ||
return collection.every( function(elm) { | ||
return (isObject(elm) || isFunction(expression)) ? | ||
$parse(expression)(elm) : | ||
elm === expression; | ||
return (isObject(elm) || isFunction(expression)) | ||
? $parse(expression)(elm) | ||
: elm === expression; | ||
}); | ||
} | ||
}]); |
@@ -10,3 +10,2 @@ /** | ||
angular.module('a8m.filter-by', []) | ||
.filter('filterBy', ['$parse', function( $parse ) { | ||
@@ -27,3 +26,2 @@ return function(collection, properties, search) { | ||
return collection.filter(function(elm) { | ||
return properties.some(function(prop) { | ||
@@ -47,10 +45,8 @@ | ||
return (isString(comparator) || isNumber(comparator)) ? | ||
String(comparator).toLowerCase().contains(search) : | ||
false; | ||
}) | ||
return (isString(comparator) || isNumber(comparator)) | ||
? String(comparator).toLowerCase().contains(search) | ||
: false; | ||
}); | ||
}); | ||
} | ||
}]); |
@@ -11,3 +11,2 @@ /** | ||
angular.module('a8m.first', []) | ||
.filter('first', ['$parse', function( $parse ) { | ||
@@ -20,4 +19,5 @@ return function(collection) { | ||
collection = (isObject(collection)) ? toArray(collection) : | ||
collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -24,0 +24,0 @@ if(!isArray(collection)) { |
@@ -10,3 +10,2 @@ /** | ||
*/ | ||
angular.module('a8m.flatten', []) | ||
@@ -17,3 +16,4 @@ .filter('flatten', function () { | ||
shallow = shallow || false; | ||
collection = (isObject(collection)) ? toArray(collection) | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -25,4 +25,5 @@ | ||
return (!shallow) ? flatten(collection, 0) : | ||
[].concat.apply([], collection); | ||
return !shallow | ||
? flatten(collection, 0) | ||
: [].concat.apply([], collection); | ||
} | ||
@@ -29,0 +30,0 @@ }); |
@@ -9,3 +9,2 @@ /** | ||
*/ | ||
angular.module('a8m.fuzzy-by', []) | ||
@@ -12,0 +11,0 @@ .filter('fuzzyBy', ['$parse', function ( $parse ) { |
@@ -9,3 +9,2 @@ /** | ||
*/ | ||
angular.module('a8m.fuzzy', []) | ||
@@ -12,0 +11,0 @@ .filter('fuzzy', function () { |
@@ -11,15 +11,15 @@ /** | ||
angular.module('a8m.last', []) | ||
.filter('last', ['$parse', function( $parse ) { | ||
return function(collection) { | ||
var n, | ||
getter, | ||
args, | ||
//cuz reverse change our src collection | ||
//and we don't want side effects | ||
reversed = copy(collection); | ||
var n | ||
, getter | ||
, args | ||
//cuz reverse change our src collection | ||
//and we don't want side effects | ||
, reversed = copy(collection); | ||
reversed = (isObject(reversed)) ? toArray(reversed) : | ||
reversed; | ||
reversed = (isObject(reversed)) | ||
? toArray(reversed) | ||
: reversed; | ||
@@ -26,0 +26,0 @@ if(!isArray(reversed)) { |
@@ -9,10 +9,9 @@ /** | ||
*/ | ||
angular.module('a8m.map', []) | ||
.filter('map', ['$parse', function($parse) { | ||
return function (collection, expression) { | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -24,3 +23,2 @@ if(!isArray(collection) || isUndefined(expression)) { | ||
return collection.map(function (elm) { | ||
return $parse(expression)(elm); | ||
@@ -27,0 +25,0 @@ }); |
@@ -15,4 +15,5 @@ /** | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -24,3 +25,2 @@ if(!isArray(collection) || isUndefined(expression)) { | ||
return collection.filter(function (elm) { | ||
return !($parse(expression)(elm)); | ||
@@ -27,0 +27,0 @@ }); |
@@ -15,4 +15,5 @@ /** | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -24,3 +25,2 @@ if(!isArray(collection) || isUndefined(expression)) { | ||
return collection.filter(function (elm) { | ||
return $parse(expression)(elm); | ||
@@ -27,0 +27,0 @@ }); |
@@ -18,4 +18,5 @@ /** | ||
} | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = isObject(collection) | ||
? toArray(collection) | ||
: collection; | ||
@@ -22,0 +23,0 @@ return collection.filter(function (elm) { |
@@ -1,2 +0,1 @@ | ||
/** | ||
@@ -11,5 +10,3 @@ * @ngdoc filter | ||
*/ | ||
angular.module('a8m.search-field', []) | ||
.filter('searchField', ['$parse', function ($parse) { | ||
@@ -16,0 +13,0 @@ return function (collection) { |
@@ -31,9 +31,9 @@ /** | ||
return (isUndefined(property)) ? | ||
return (isUndefined(property)) | ||
//if it's kind of primitive array | ||
collection.filter(function (elm, pos, self) { | ||
? collection.filter(function (elm, pos, self) { | ||
return self.indexOf(elm) === pos; | ||
}) : | ||
}) | ||
//else compare with equals | ||
collection.filter(function (elm) { | ||
: collection.filter(function (elm) { | ||
var prop = get(elm); | ||
@@ -56,4 +56,3 @@ if(some(uniqueItems, prop)) { | ||
} | ||
} | ||
} |
@@ -11,3 +11,2 @@ /** | ||
*/ | ||
angular.module('a8m.where', []) | ||
@@ -20,4 +19,5 @@ .filter('where', function() { | ||
} | ||
collection = (isObject(collection)) ? | ||
toArray(collection) : collection; | ||
collection = (isObject(collection)) | ||
? toArray(collection) | ||
: collection; | ||
@@ -24,0 +24,0 @@ return collection.filter(function (elm) { |
@@ -30,8 +30,8 @@ /** | ||
return col.some(function(dElm) { | ||
return expression ? | ||
equals(getter(dElm), getter(el)) : | ||
equals(dElm, el); | ||
}) | ||
return expression | ||
? equals(getter(dElm), getter(el)) | ||
: equals(dElm, el); | ||
}); | ||
} | ||
} | ||
}]); |
@@ -10,13 +10,12 @@ /** | ||
*/ | ||
angular.module('a8m.ucfirst', []) | ||
.filter('ucfirst', [function() { | ||
return function(input) { | ||
return angular.isString(input) ? input.split(' ') | ||
.map(function (char) { | ||
return char.charAt(0).toUpperCase() + char.substring(1); | ||
}).join(' ') : input; | ||
if(!isString(input)) { | ||
return input; | ||
} | ||
return input.split(' ').map(function (ch) { | ||
return ch.charAt(0).toUpperCase() + ch.substring(1); | ||
}).join(' '); | ||
} | ||
}]); |
@@ -44,3 +44,3 @@ /** | ||
function getHashKey(fName, args) { | ||
return [fName, JSON.stringify(args)] | ||
return [fName, angular.toJson(args)] | ||
.join('#') | ||
@@ -137,20 +137,2 @@ .replace(/"/g,''); | ||
}); | ||
@@ -53,2 +53,3 @@ /** | ||
'a8m.flatten', | ||
'a8m.join', | ||
@@ -55,0 +56,0 @@ 'a8m.math', |
@@ -13,3 +13,2 @@ 'use strict'; | ||
it('should get collection of primitives and use strict comparison(===)', function() { | ||
expect(filter(['foo', 'bar'], 'bar')).toBeTruthy(); | ||
@@ -20,3 +19,2 @@ expect(filter([1,2,3,4], 4)).toBeTruthy(); | ||
expect(filter([1,2,3,4], -1)).toBeFalsy(); | ||
}); | ||
@@ -26,3 +24,2 @@ | ||
'present in one or more object in the collection', function() { | ||
var array = [ | ||
@@ -37,7 +34,6 @@ { id: 1, name: 'foo' }, | ||
expect(filter(array, 'id >= 1 && name === \'foo\'')).toBeTruthy(); | ||
expect(filter(array)).toBeTruthy(); | ||
expect(filter(array)).toBeFalsy(); | ||
expect(filter(array, 'id > 77')).toBeFalsy(); | ||
expect(filter(array, 'name.indexOf(\'u\') !== -1')).toBeFalsy(); | ||
}); | ||
@@ -47,3 +43,2 @@ | ||
'present in one or more object in the collection', function() { | ||
var object = { | ||
@@ -56,14 +51,11 @@ 0: { id: 1, name: 'foo' }, | ||
expect(filter(object, 'id === 2')).toBeTruthy(); | ||
expect(filter(object, 'id >= 1 && name === "foo"')).toBeTruthy(); | ||
expect(filter(object)).toBeTruthy(); | ||
expect(filter(object)).toBeFalsy(); | ||
expect(filter(object, 'id > 77')).toBeFalsy(); | ||
expect(filter(object, 'name.indexOf(\'u\') !== -1')).toBeFalsy(); | ||
}); | ||
it('should get function as expression', function() { | ||
var array = [1, 2, 3, 4, 5]; | ||
@@ -76,13 +68,10 @@ | ||
expect(filter(array, mod2)).toBeTruthy(); | ||
}); | ||
it('should get !collection and return always true', function() { | ||
expect(filter('lorem ipsum')).toBeTruthy(); | ||
expect(filter(1, null)).toBeTruthy(); | ||
expect(filter(!1)).toBeTruthy(); | ||
expect(filter('lorem ipsum')).toBeFalsy(); | ||
expect(filter(1, null)).toBeFalsy(); | ||
expect(filter(!1)).toBeFalsy(); | ||
}); | ||
}); |
@@ -16,10 +16,10 @@ 'use strict'; | ||
var array = [ | ||
{ id: 1, name: 'ariel' }, | ||
{ id: 2, name: 'baz' }, | ||
{ id: 1, name: 'ariel' }, | ||
{ id: 1, name: 'bar' } | ||
{ id: 0, name: 'ariel' }, | ||
{ id: 1, name: 'baz' }, | ||
{ id: 0, name: 'ariel' }, | ||
{ id: 0, name: 'bar' } | ||
]; | ||
expect(filter(array, { id: 1, name: 'ariel' })).toEqual([array[0], array[2]]); | ||
expect(filter(array, { id: 1 })).not.toContain(array[1]); | ||
expect(filter(array, { id: 0, name: 'ariel' })).toEqual([array[0], array[2]]); | ||
expect(filter(array, { id: 0 })).not.toContain(array[1]); | ||
@@ -26,0 +26,0 @@ expect(filter(array, {})).toEqual(array); |
Sorry, the diff of this file is not supported yet
307640
131
6085
1311