1
1
/**
2
2
* @author Jason Dobry <[email protected] >
3
3
* @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/>
5
5
* @copyright (c) 2014 Jason Dobry <https://github.com/jmdobry/>
6
6
* @license MIT <https://github.com/jmdobry/angular-data/blob/master/LICENSE>
7
7
*
@@ -988,7 +988,7 @@ var mixIn = require('../object/mixIn');
988
988
var flags = '' ;
989
989
flags += r . multiline ? 'm' : '' ;
990
990
flags += r . global ? 'g' : '' ;
991
- flags += r . ignorecase ? 'i' : '' ;
991
+ flags += r . ignoreCase ? 'i' : '' ;
992
992
return new RegExp ( r . source , flags ) ;
993
993
}
994
994
@@ -4258,64 +4258,55 @@ Defaults.prototype.defaultFilter = function (collection, resourceName, params, o
4258
4258
} ;
4259
4259
}
4260
4260
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 ;
4262
4266
if ( op === '==' ) {
4263
- keep = first ? ( attrs [ field ] == val ) : keep && ( attrs [ field ] == val ) ;
4267
+ expr = val == term ;
4264
4268
} else if ( op === '===' ) {
4265
- keep = first ? ( attrs [ field ] === val ) : keep && ( attrs [ field ] === val ) ;
4269
+ expr = val === term ;
4266
4270
} else if ( op === '!=' ) {
4267
- keep = first ? ( attrs [ field ] != val ) : keep && ( attrs [ field ] != val ) ;
4271
+ expr = val != term ;
4268
4272
} else if ( op === '!==' ) {
4269
- keep = first ? ( attrs [ field ] !== val ) : keep && ( attrs [ field ] !== val ) ;
4273
+ expr = val !== term ;
4270
4274
} else if ( op === '>' ) {
4271
- keep = first ? ( attrs [ field ] > val ) : keep && ( attrs [ field ] > val ) ;
4275
+ expr = val > term ;
4272
4276
} else if ( op === '>=' ) {
4273
- keep = first ? ( attrs [ field ] >= val ) : keep && ( attrs [ field ] >= val ) ;
4277
+ expr = val >= term ;
4274
4278
} else if ( op === '<' ) {
4275
- keep = first ? ( attrs [ field ] < val ) : keep && ( attrs [ field ] < val ) ;
4279
+ expr = val < term ;
4276
4280
} else if ( op === '<=' ) {
4277
- keep = first ? ( attrs [ field ] <= val ) : keep && ( attrs [ field ] <= val ) ;
4281
+ expr = val <= term ;
4278
4282
} 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 ;
4281
4285
} else {
4282
- keep = first ? DSUtils . contains ( val , attrs [ field ] ) : keep && DSUtils . contains ( val , attrs [ field ] ) ;
4286
+ expr = DSUtils . contains ( term , val ) ;
4283
4287
}
4284
4288
} 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 ;
4287
4291
} else {
4288
- keep = first ? ! DSUtils . contains ( val , attrs [ field ] ) : keep && ! DSUtils . contains ( val , attrs [ field ] ) ;
4292
+ expr = ! DSUtils . contains ( term , val ) ;
4289
4293
}
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 ;
4309
4297
} else {
4310
- keep = first ? DSUtils . contains ( val , attrs [ field ] ) : keep || DSUtils . contains ( val , attrs [ field ] ) ;
4298
+ expr = DSUtils . contains ( val , term ) ;
4311
4299
}
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 ;
4315
4303
} else {
4316
- keep = first ? ! DSUtils . contains ( val , attrs [ field ] ) : keep || ! DSUtils . contains ( val , attrs [ field ] ) ;
4304
+ expr = ! DSUtils . contains ( val , term ) ;
4317
4305
}
4318
4306
}
4307
+ if ( expr !== undefined ) {
4308
+ keep = first ? expr : ( isOr ? keep || expr : keep && expr ) ;
4309
+ }
4319
4310
first = false ;
4320
4311
} ) ;
4321
4312
}
@@ -6769,10 +6760,9 @@ function _inject(definition, resource, attrs, options) {
6769
6760
} else {
6770
6761
item = { } ;
6771
6762
}
6772
- resource . previousAttributes [ id ] = { } ;
6763
+ resource . previousAttributes [ id ] = angular . copy ( attrs ) ;
6773
6764
6774
6765
DSUtils . deepMixIn ( item , attrs ) ;
6775
- DSUtils . deepMixIn ( resource . previousAttributes [ id ] , attrs ) ;
6776
6766
6777
6767
resource . collection . push ( item ) ;
6778
6768
@@ -7824,6 +7814,7 @@ var toPromisify = [
7824
7814
7825
7815
var find = require ( 'mout/array/find' ) ;
7826
7816
var isRegExp = require ( 'mout/lang/isRegExp' ) ;
7817
+ var deepEquals = angular . equals ;
7827
7818
7828
7819
function isBlacklisted ( prop , blacklist ) {
7829
7820
if ( ! blacklist || ! blacklist . length ) {
@@ -7853,6 +7844,7 @@ module.exports = ['$q', function ($q) {
7853
7844
upperCase : require ( 'mout/string/upperCase' ) ,
7854
7845
pascalCase : require ( 'mout/string/pascalCase' ) ,
7855
7846
deepMixIn : require ( 'mout/object/deepMixIn' ) ,
7847
+ deepEquals : deepEquals ,
7856
7848
mixIn : require ( 'mout/object/mixIn' ) ,
7857
7849
forEach : angular . forEach ,
7858
7850
pick : require ( 'mout/object/pick' ) ,
@@ -7866,6 +7858,7 @@ module.exports = ['$q', function ($q) {
7866
7858
slice : require ( 'mout/array/slice' ) ,
7867
7859
sort : require ( 'mout/array/sort' ) ,
7868
7860
guid : require ( 'mout/random/guid' ) ,
7861
+ copy : angular . copy ,
7869
7862
keys : require ( 'mout/object/keys' ) ,
7870
7863
_ : function ( parent , options ) {
7871
7864
var _this = this ;
@@ -7940,7 +7933,7 @@ module.exports = ['$q', function ($q) {
7940
7933
continue ;
7941
7934
}
7942
7935
7943
- if ( newValue !== undefined && newValue === oldObject [ prop ] ) {
7936
+ if ( newValue !== undefined && deepEquals ( newValue , oldObject [ prop ] ) ) {
7944
7937
continue ;
7945
7938
}
7946
7939
@@ -7949,7 +7942,7 @@ module.exports = ['$q', function ($q) {
7949
7942
continue ;
7950
7943
}
7951
7944
7952
- if ( newValue !== oldObject [ prop ] ) {
7945
+ if ( ! deepEquals ( newValue , oldObject [ prop ] ) ) {
7953
7946
changed [ prop ] = newValue ;
7954
7947
}
7955
7948
}
0 commit comments