range.js (938B)
1 const field = require('../../field'); 2 3 module.exports = { 4 detect : function (query) { 5 if (!query) return false; 6 if ('object' !== typeof query) return false; 7 if (!('inclusive' in query)) return false; 8 if (isNaN(query.term_min)) return false; 9 return !isNaN(query.term_max); 10 }, 11 compile: function (query) { 12 return function (data) { 13 return field(query.field, data, function (value) { 14 // console.log('range value', query, value); 15 let min = parseFloat(query.term_min); 16 let max = parseFloat(query.term_max); 17 let inclusive = query.inclusive; 18 if (inclusive === 'both') { 19 return (value >= min) && (value <= max); 20 } 21 if (inclusive === 'left') { 22 return (value >= min) && (value < max); 23 } 24 if (inclusive === 'right') { 25 return (value > min) && (value <= max); 26 } 27 return false; 28 }); 29 }; 30 }, 31 };