@@ -42,20 +42,27 @@ function processQuery(key, value) {
4242}
4343
4444function treatValue ( value ) {
45- if ( isDate ( value ) ) return new Date ( value ) . toISOString ( )
45+ if ( isDate ( value ) || isDateTime ( value ) ) return new Date ( value ) . toISOString ( )
46+ else if ( value . includes ( '*' ) ) return buildRegEx ( value )
47+ else if ( value . includes ( ':' ) ) return getCompareOperator ( value )
48+ else if ( value === 'now' ) return new Date ( ) . toISOString ( )
4649 else if ( parseInt ( value ) ) return parseInt ( value )
47- else if ( value . includes ( '*' ) ) value = buildRegEx ( value )
48- else if ( value . includes ( ':' ) ) {
49- var result = { }
50- value = value . split ( ':' )
51- result [ `$${ value [ 0 ] } ` ] = treatValue ( value [ 1 ] )
52- value = result
53- }
5450 return value
5551}
5652
5753function isDate ( value ) {
58- return / ( ^ \d { 4 } - \d { 1 , 2 } - \d { 1 , 2 } $ ) | ( ^ \d { 4 } - \d { 1 , 2 } - \d { 1 , 2 } T \d { 2 } : \d { 2 } : \d { 2 } $ ) / . test ( value )
54+ return / ^ ( [ 1 2 ] \d { 3 } - ( 0 [ 1 - 9 ] | 1 [ 0 - 2 ] ) - ( 0 [ 1 - 9 ] | [ 1 2 ] \d | 3 [ 0 1 ] ) ) $ / . test ( value )
55+ }
56+ function isDateTime ( value ) {
57+ return / ^ ( [ 1 2 ] \d { 3 } - ( 0 [ 1 - 9 ] | 1 [ 0 - 2 ] ) - ( 0 [ 1 - 9 ] | [ 1 2 ] \d | 3 [ 0 1 ] ) ) T ( 0 [ 0 - 9 ] | 1 [ 0 - 9 ] | 2 [ 0 - 3 ] ) : ( [ 0 - 9 ] | [ 0 - 5 ] [ 0 - 9 ] ) : ( [ 0 - 9 ] | [ 0 - 5 ] [ 0 - 9 ] ) $ / . test ( value )
58+ }
59+
60+ function getCompareOperator ( value ) {
61+ if ( value . startsWith ( 'gte' ) ) return { '$gte' : treatValue ( value . slice ( 4 ) ) }
62+ else if ( value . startsWith ( 'gt' ) ) return { '$gt' : treatValue ( value . slice ( 3 ) ) }
63+ else if ( value . startsWith ( 'lte' ) ) return { '$lte' : treatValue ( value . slice ( 4 ) ) }
64+ else if ( value . startsWith ( 'lt' ) ) return { '$lt' : treatValue ( value . slice ( 3 ) ) }
65+ return value
5966}
6067
6168function splitByCommas ( key , value ) {
@@ -79,13 +86,13 @@ function buildRegEx(value) {
7986function parseDate ( query , options ) {
8087 var result = [ ]
8188 if ( query . period ) {
82- ( query . date_end && isDate ( query . date_end ) ) ?
89+ ( query . date_end ) ?
8390 result . push (
84- processQuery ( options . date_field , 'lt:' . concat ( getDateStart ( '0d' , new Date ( query . date_end ) ) ) ) ,
91+ processQuery ( options . date_field , 'lt:' . concat ( query . date_end ) ) ,
8592 processQuery ( options . date_field , 'gte:' . concat (
8693 getDateStart ( query . period , new Date ( query . date_end ) ) ) ) ) :
8794 result . push (
88- processQuery ( options . date_field , 'lt:' . concat ( getDateStart ( '0d' , new Date ( ) ) ) ) ,
95+ processQuery ( options . date_field , 'lt:now' ) ,
8996 processQuery ( options . date_field , 'gte:' . concat (
9097 getDateStart ( query . period , new Date ( ) ) ) ) )
9198 return result
@@ -97,7 +104,7 @@ function parseDate(query, options) {
97104 processQuery ( options . date_field , 'lt:' . concat ( query . date_end ) ) )
98105 } else {
99106 result . push (
100- processQuery ( options . date_field , 'lt:' . concat ( getDateStart ( '0d' , new Date ( ) ) ) ) )
107+ processQuery ( options . date_field , 'lt:now' ) )
101108 }
102109 result . push (
103110 processQuery ( options . date_field , 'gte:' . concat ( query . date_start ) ) )
@@ -110,7 +117,7 @@ function getDateStart(period, date_end) {
110117 return dateToString ( new Date (
111118 date_end . getFullYear ( ) ,
112119 date_end . getMonth ( ) ,
113- ( date_end . getDate ( ) - onlyNumbers ( period ) + 1 ) ) )
120+ ( date_end . getDate ( ) - onlyNumbers ( period ) ) ) )
114121 }
115122 else if ( period . endsWith ( 'w' ) ) {
116123 return dateToString ( new Date (
0 commit comments