11/**
22* @author Jason Dobry <jason.dobry@gmail.com>
33* @file angular-data.js
4- * @version 1.5.0 - Homepage <http://angular-data.pseudobry.com/>
4+ * @version 1.5.1 - Homepage <http://angular-data.pseudobry.com/>
55* @copyright (c) 2014 Jason Dobry <https://github.com/jmdobry/>
66* @license MIT <https://github.com/jmdobry/angular-data/blob/master/LICENSE>
77*
@@ -988,7 +988,7 @@ var mixIn = require('../object/mixIn');
988988 var flags = '' ;
989989 flags += r . multiline ? 'm' : '' ;
990990 flags += r . global ? 'g' : '' ;
991- flags += r . ignorecase ? 'i' : '' ;
991+ flags += r . ignoreCase ? 'i' : '' ;
992992 return new RegExp ( r . source , flags ) ;
993993 }
994994
@@ -4258,64 +4258,55 @@ Defaults.prototype.defaultFilter = function (collection, resourceName, params, o
42584258 } ;
42594259 }
42604260 if ( DSUtils . isObject ( clause ) ) {
4261- DSUtils . forEach ( clause , function ( val , op ) {
4261+ DSUtils . forEach ( clause , function ( term , op ) {
4262+ var expr ;
4263+ var isOr = op [ 0 ] === '|' ;
4264+ var val = attrs [ field ] ;
4265+ op = isOr ? op . substr ( 1 ) : op ;
42624266 if ( op === '==' ) {
4263- keep = first ? ( attrs [ field ] == val ) : keep && ( attrs [ field ] == val ) ;
4267+ expr = val == term ;
42644268 } else if ( op === '===' ) {
4265- keep = first ? ( attrs [ field ] === val ) : keep && ( attrs [ field ] === val ) ;
4269+ expr = val === term ;
42664270 } else if ( op === '!=' ) {
4267- keep = first ? ( attrs [ field ] != val ) : keep && ( attrs [ field ] != val ) ;
4271+ expr = val != term ;
42684272 } else if ( op === '!==' ) {
4269- keep = first ? ( attrs [ field ] !== val ) : keep && ( attrs [ field ] !== val ) ;
4273+ expr = val !== term ;
42704274 } else if ( op === '>' ) {
4271- keep = first ? ( attrs [ field ] > val ) : keep && ( attrs [ field ] > val ) ;
4275+ expr = val > term ;
42724276 } else if ( op === '>=' ) {
4273- keep = first ? ( attrs [ field ] >= val ) : keep && ( attrs [ field ] >= val ) ;
4277+ expr = val >= term ;
42744278 } else if ( op === '<' ) {
4275- keep = first ? ( attrs [ field ] < val ) : keep && ( attrs [ field ] < val ) ;
4279+ expr = val < term ;
42764280 } else if ( op === '<=' ) {
4277- keep = first ? ( attrs [ field ] <= val ) : keep && ( attrs [ field ] <= val ) ;
4281+ expr = val <= term ;
42784282 } else if ( op === 'in' ) {
4279- if ( DSUtils . isString ( val ) ) {
4280- keep = first ? val . indexOf ( attrs [ field ] ) !== - 1 : keep && val . indexOf ( attrs [ field ] ) !== - 1 ;
4283+ if ( DSUtils . isString ( term ) ) {
4284+ expr = term . indexOf ( val ) !== - 1 ;
42814285 } else {
4282- keep = first ? DSUtils . contains ( val , attrs [ field ] ) : keep && DSUtils . contains ( val , attrs [ field ] ) ;
4286+ expr = DSUtils . contains ( term , val ) ;
42834287 }
42844288 } else if ( op === 'notIn' ) {
4285- if ( DSUtils . isString ( val ) ) {
4286- keep = first ? val . indexOf ( attrs [ field ] ) === - 1 : keep && val . indexOf ( attrs [ field ] ) === - 1 ;
4289+ if ( DSUtils . isString ( term ) ) {
4290+ expr = term . indexOf ( val ) === - 1 ;
42874291 } else {
4288- keep = first ? ! DSUtils . contains ( val , attrs [ field ] ) : keep && ! DSUtils . contains ( val , attrs [ field ] ) ;
4292+ expr = ! DSUtils . contains ( term , val ) ;
42894293 }
4290- } else if ( op === '|==' ) {
4291- keep = first ? ( attrs [ field ] == val ) : keep || ( attrs [ field ] == val ) ;
4292- } else if ( op === '|===' ) {
4293- keep = first ? ( attrs [ field ] === val ) : keep || ( attrs [ field ] === val ) ;
4294- } else if ( op === '|!=' ) {
4295- keep = first ? ( attrs [ field ] != val ) : keep || ( attrs [ field ] != val ) ;
4296- } else if ( op === '|!==' ) {
4297- keep = first ? ( attrs [ field ] !== val ) : keep || ( attrs [ field ] !== val ) ;
4298- } else if ( op === '|>' ) {
4299- keep = first ? ( attrs [ field ] > val ) : keep || ( attrs [ field ] > val ) ;
4300- } else if ( op === '|>=' ) {
4301- keep = first ? ( attrs [ field ] >= val ) : keep || ( attrs [ field ] >= val ) ;
4302- } else if ( op === '|<' ) {
4303- keep = first ? ( attrs [ field ] < val ) : keep || ( attrs [ field ] < val ) ;
4304- } else if ( op === '|<=' ) {
4305- keep = first ? ( attrs [ field ] <= val ) : keep || ( attrs [ field ] <= val ) ;
4306- } else if ( op === '|in' ) {
4307- if ( DSUtils . isString ( val ) ) {
4308- keep = first ? val . indexOf ( attrs [ field ] ) !== - 1 : keep || val . indexOf ( attrs [ field ] ) !== - 1 ;
4294+ } else if ( op === 'contains' ) {
4295+ if ( DSUtils . isString ( term ) ) {
4296+ expr = ( val || '' ) . indexOf ( term ) !== - 1 ;
43094297 } else {
4310- keep = first ? DSUtils . contains ( val , attrs [ field ] ) : keep || DSUtils . contains ( val , attrs [ field ] ) ;
4298+ expr = DSUtils . contains ( val , term ) ;
43114299 }
4312- } else if ( op === '|notIn ' ) {
4313- if ( DSUtils . isString ( val ) ) {
4314- keep = first ? val . indexOf ( attrs [ field ] ) === - 1 : keep || val . indexOf ( attrs [ field ] ) === - 1 ;
4300+ } else if ( op === 'notContains ' ) {
4301+ if ( DSUtils . isString ( term ) ) {
4302+ expr = ( val || '' ) . indexOf ( term ) === - 1 ;
43154303 } else {
4316- keep = first ? ! DSUtils . contains ( val , attrs [ field ] ) : keep || ! DSUtils . contains ( val , attrs [ field ] ) ;
4304+ expr = ! DSUtils . contains ( val , term ) ;
43174305 }
43184306 }
4307+ if ( expr !== undefined ) {
4308+ keep = first ? expr : ( isOr ? keep || expr : keep && expr ) ;
4309+ }
43194310 first = false ;
43204311 } ) ;
43214312 }
@@ -6769,10 +6760,9 @@ function _inject(definition, resource, attrs, options) {
67696760 } else {
67706761 item = { } ;
67716762 }
6772- resource . previousAttributes [ id ] = { } ;
6763+ resource . previousAttributes [ id ] = angular . copy ( attrs ) ;
67736764
67746765 DSUtils . deepMixIn ( item , attrs ) ;
6775- DSUtils . deepMixIn ( resource . previousAttributes [ id ] , attrs ) ;
67766766
67776767 resource . collection . push ( item ) ;
67786768
@@ -7824,6 +7814,7 @@ var toPromisify = [
78247814
78257815var find = require ( 'mout/array/find' ) ;
78267816var isRegExp = require ( 'mout/lang/isRegExp' ) ;
7817+ var deepEquals = angular . equals ;
78277818
78287819function isBlacklisted ( prop , blacklist ) {
78297820 if ( ! blacklist || ! blacklist . length ) {
@@ -7853,6 +7844,7 @@ module.exports = ['$q', function ($q) {
78537844 upperCase : require ( 'mout/string/upperCase' ) ,
78547845 pascalCase : require ( 'mout/string/pascalCase' ) ,
78557846 deepMixIn : require ( 'mout/object/deepMixIn' ) ,
7847+ deepEquals : deepEquals ,
78567848 mixIn : require ( 'mout/object/mixIn' ) ,
78577849 forEach : angular . forEach ,
78587850 pick : require ( 'mout/object/pick' ) ,
@@ -7866,6 +7858,7 @@ module.exports = ['$q', function ($q) {
78667858 slice : require ( 'mout/array/slice' ) ,
78677859 sort : require ( 'mout/array/sort' ) ,
78687860 guid : require ( 'mout/random/guid' ) ,
7861+ copy : angular . copy ,
78697862 keys : require ( 'mout/object/keys' ) ,
78707863 _ : function ( parent , options ) {
78717864 var _this = this ;
@@ -7940,7 +7933,7 @@ module.exports = ['$q', function ($q) {
79407933 continue ;
79417934 }
79427935
7943- if ( newValue !== undefined && newValue === oldObject [ prop ] ) {
7936+ if ( newValue !== undefined && deepEquals ( newValue , oldObject [ prop ] ) ) {
79447937 continue ;
79457938 }
79467939
@@ -7949,7 +7942,7 @@ module.exports = ['$q', function ($q) {
79497942 continue ;
79507943 }
79517944
7952- if ( newValue !== oldObject [ prop ] ) {
7945+ if ( ! deepEquals ( newValue , oldObject [ prop ] ) ) {
79537946 changed [ prop ] = newValue ;
79547947 }
79557948 }
0 commit comments