@@ -6,6 +6,7 @@ var app = require('ampersand-app');
6
6
var LeafValue = require ( 'mongodb-language-model' ) . LeafValue ;
7
7
var LeafClause = require ( 'mongodb-language-model' ) . LeafClause ;
8
8
var ListOperator = require ( 'mongodb-language-model' ) . ListOperator ;
9
+ var ValueOperator = require ( 'mongodb-language-model' ) . ValueOperator ;
9
10
var GeoOperator = require ( 'mongodb-language-model' ) . GeoOperator ;
10
11
var Range = require ( 'mongodb-language-model' ) . helpers . Range ;
11
12
var metrics = require ( 'mongodb-js-metrics' ) ( ) ;
@@ -287,6 +288,23 @@ module.exports = {
287
288
throw new Error ( 'message.selected should never be longer than 2 elements here!' ) ;
288
289
}
289
290
291
+ var q ;
292
+ // in case one of the bounds is open
293
+ if ( message . data . openLeft ) {
294
+ message . upperOp = message . dx > 0 ? '$lt' : '$lte' ;
295
+ q = { } ;
296
+ q [ message . upperOp ] = message . selected [ 1 ] ;
297
+ message . value = new ValueOperator ( q , { parse : true } ) ;
298
+ return message ;
299
+ }
300
+
301
+ // in case one of the bounds is open
302
+ if ( message . data . openRight ) {
303
+ message . lowerOp = '$gte' ;
304
+ message . value = new ValueOperator ( { $gte : message . selected [ 0 ] } , { parse : true } ) ;
305
+ return message ;
306
+ }
307
+
290
308
// at this point we definitely have 2 selected values to build a range
291
309
message . lowerOp = '$gte' ;
292
310
message . upperOp = message . dx > 0 ? '$lt' : '$lte' ;
@@ -324,7 +342,6 @@ module.exports = {
324
342
return message ;
325
343
} ,
326
344
327
-
328
345
/**
329
346
* update the UI after a distinct query and mark appropriate elements with .select class.
330
347
*
0 commit comments