@@ -10,31 +10,71 @@ export default (entityData = [], filter = {}) => {
1010 if ( key . indexOf ( '_neq' ) !== - 1 ) {
1111 // not equal to
1212 const realKey = key . replace ( / ( _ n e q ) $ / , '' ) ;
13- items = items . filter ( ( d ) => d [ realKey ] != filter [ key ] ) ;
13+ items = items . filter ( ( d ) => {
14+ if (
15+ filter [ key ] instanceof Date &&
16+ typeof d [ realKey ] === 'string'
17+ ) {
18+ return d [ realKey ] != filter [ key ] . toISOString ( ) ;
19+ }
20+ return d [ realKey ] != filter [ key ] ;
21+ } ) ;
1422 return ;
1523 }
1624 if ( key . indexOf ( '_lte' ) !== - 1 ) {
1725 // less than or equal
1826 const realKey = key . replace ( / ( _ l t e ) $ / , '' ) ;
19- items = items . filter ( ( d ) => d [ realKey ] <= filter [ key ] ) ;
27+ items = items . filter ( ( d ) => {
28+ if (
29+ filter [ key ] instanceof Date &&
30+ typeof d [ realKey ] === 'string'
31+ ) {
32+ return d [ realKey ] <= filter [ key ] . toISOString ( ) ;
33+ }
34+ return d [ realKey ] <= filter [ key ] ;
35+ } ) ;
2036 return ;
2137 }
2238 if ( key . indexOf ( '_gte' ) !== - 1 ) {
2339 // less than or equal
2440 const realKey = key . replace ( / ( _ g t e ) $ / , '' ) ;
25- items = items . filter ( ( d ) => d [ realKey ] >= filter [ key ] ) ;
41+ items = items . filter ( ( d ) => {
42+ if (
43+ filter [ key ] instanceof Date &&
44+ typeof d [ realKey ] === 'string'
45+ ) {
46+ return d [ realKey ] >= filter [ key ] . toISOString ( ) ;
47+ }
48+ return d [ realKey ] >= filter [ key ] ;
49+ } ) ;
2650 return ;
2751 }
2852 if ( key . indexOf ( '_lt' ) !== - 1 ) {
2953 // less than or equal
3054 const realKey = key . replace ( / ( _ l t ) $ / , '' ) ;
31- items = items . filter ( ( d ) => d [ realKey ] < filter [ key ] ) ;
55+ items = items . filter ( ( d ) => {
56+ if (
57+ filter [ key ] instanceof Date &&
58+ typeof d [ realKey ] === 'string'
59+ ) {
60+ return d [ realKey ] < filter [ key ] . toISOString ( ) ;
61+ }
62+ return d [ realKey ] < filter [ key ] ;
63+ } ) ;
3264 return ;
3365 }
3466 if ( key . indexOf ( '_gt' ) !== - 1 ) {
3567 // less than or equal
3668 const realKey = key . replace ( / ( _ g t ) $ / , '' ) ;
37- items = items . filter ( ( d ) => d [ realKey ] > filter [ key ] ) ;
69+ items = items . filter ( ( d ) => {
70+ if (
71+ filter [ key ] instanceof Date &&
72+ typeof d [ realKey ] === 'string'
73+ ) {
74+ return d [ realKey ] > filter [ key ] . toISOString ( ) ;
75+ }
76+ return d [ realKey ] > filter [ key ] ;
77+ } ) ;
3878 return ;
3979 }
4080
@@ -43,20 +83,42 @@ export default (entityData = [], filter = {}) => {
4383 if ( Array . isArray ( item [ key ] ) ) {
4484 // array filter and array item value: where all items in values
4585 return filter [ key ] . every ( ( v ) =>
46- item [ key ] . some ( ( itemValue ) => itemValue == v )
86+ item [ key ] . some ( ( itemValue ) => {
87+ if (
88+ v instanceof Date &&
89+ typeof itemValue === 'string'
90+ ) {
91+ return itemValue == v . toISOString ( ) ;
92+ }
93+ return itemValue == v ;
94+ } )
4795 ) ;
4896 }
4997 // where item in values
5098 return (
51- filter [ key ] . filter ( ( v ) => v == item [ key ] ) . length > 0
99+ filter [ key ] . filter ( ( v ) => {
100+ if (
101+ v instanceof Date &&
102+ typeof item [ key ] === 'string'
103+ ) {
104+ return item [ key ] == v . toISOString ( ) ;
105+ }
106+ return v == item [ key ] ;
107+ } ) . length > 0
52108 ) ;
53109 } ) ;
54110 } else {
55- items = items . filter ( ( d ) =>
56- filter [ key ] instanceof Date
111+ items = items . filter ( ( d ) => {
112+ if (
113+ filter [ key ] instanceof Date &&
114+ typeof d [ key ] === 'string'
115+ ) {
116+ return d [ key ] == filter [ key ] . toISOString ( ) ;
117+ }
118+ return filter [ key ] instanceof Date
57119 ? + d [ key ] == + filter [ key ]
58- : d [ key ] == filter [ key ]
59- ) ;
120+ : d [ key ] == filter [ key ] ;
121+ } ) ;
60122 }
61123 } ) ;
62124
0 commit comments