ag-grid-mongo-query-builder
Advanced tools
Comparing version 0.2.8 to 0.2.9
{ | ||
"name": "ag-grid-mongo-query-builder", | ||
"version": "0.2.8", | ||
"version": "0.2.9", | ||
"description": "Utility to generate Mongo DB aggregation pipeline queries starting from AgGrid server side params", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -316,2 +316,4 @@ //const mongoose = require('mongoose'); | ||
switch (obj.type) { | ||
case "equals": return { [key]: obj.filter }; | ||
case "notEqual": return { [key]: { "$ne": obj.filter } }; | ||
case "lessThan": return { [key]: { "$lt": obj.filter } }; | ||
@@ -321,3 +323,7 @@ case "lessThanOrEqual": return { [key]: { "$lte": obj.filter } }; | ||
case "greaterThanOrEqual": return { [key]: { "$gte": obj.filter } }; | ||
case "inRange": return { "$and": [{ [key]: { "$lt": obj.lt } }, { [key]: { "$gt": obj.gt } }] }; | ||
case "inRange": return { "$and": [{ [key]: { "$lte": obj.filterTo } }, { [key]: { "$gte": obj.filter } }] }; | ||
case "blank": return { $or : [ {[key]: {"$exists": true, "$eq": "" }}, {[key]: {"$exists": false}}]}; | ||
case "notBlank": return { [key]: { "$exists": true, "$ne": "" }}; | ||
case "false": return { [key]: false}; | ||
case "true": return { [key]: true}; | ||
default: return { [key]: obj.filter }; | ||
@@ -343,2 +349,4 @@ } | ||
case "inRange": return { "$and": [{ [key]: { "$gte": obj.dateFrom } }, { [key]: { "$lte": obj.dateTo } }] }; | ||
case "blank": return { $or : [ {[key]: {"$exists": true, "$eq": "" }}, {[key]: {"$exists": false}}]}; | ||
case "notBlank": return { [key]: { "$exists": true, "$ne": "" }}; | ||
default: return { [key]: obj.dateFrom }; | ||
@@ -357,4 +365,6 @@ } | ||
case "endsWith": return { [key]: { "$regex": obj.filter + "$", '$options': 'i' } }; | ||
case "blank": return { [key]: { "$exists": true, "$eq": "" } }; | ||
case "blank": return { $or : [ {[key]: {"$exists": true, "$eq": "" }}, {[key]: {"$exists": false}}]}; | ||
case "notBlank": return { [key]: { "$exists": true, "$ne": "" }}; | ||
case "false": return { [key]: false}; | ||
case "true": return { [key]: true}; | ||
default: return { [key]: obj.filter }; | ||
@@ -826,2 +836,4 @@ } | ||
let reqCurrBatch = requestPerBatch; | ||
let flagColumns = req.body && req.body.flagColumns ? req.body.flagColumns : null; | ||
let flagValue = req.body && req.body.flagFilters ? req.body.flagFilters : null; | ||
const currentBatchLimit = (currBatch * requestPerBatch * recordsPerPage); | ||
@@ -847,23 +859,33 @@ if(currentBatchLimit > totalCount) { | ||
response.map(eachRes => { | ||
eachRes.map(function(obj) { | ||
let tempDataObj = {}; | ||
for (let i in keys) { | ||
if (obj[keys[i].fieldName] && Array.isArray(obj[keys[i].fieldName])) { | ||
tempDataObj[keys[i].fieldName] = obj[keys[i].fieldName].toString(); | ||
} else if (obj[keys[i].fieldName] == "" || obj[keys[i].fieldName] == null || obj[keys[i].fieldName] == undefined) { | ||
tempDataObj[keys[i].fieldName] = ""; | ||
} else { | ||
tempDataObj[keys[i].fieldName] = obj[keys[i].fieldName]; | ||
} | ||
eachRes.map(function(obj) { | ||
let tempDataObj = {}; | ||
for (let i in keys) { | ||
if (obj[keys[i].fieldName] && Array.isArray(obj[keys[i].fieldName])) { | ||
tempDataObj[keys[i].fieldName] = obj[keys[i].fieldName].toString(); | ||
} else if (keys[i].dataType && (obj[keys[i].fieldName] == "" || obj[keys[i].fieldName] == null || obj[keys[i].fieldName] == undefined)) { | ||
tempDataObj[keys[i].fieldName] = ""; | ||
} else if(keys[i].dataType) { | ||
tempDataObj[keys[i].fieldName] = obj[keys[i].fieldName]; | ||
} | ||
if(keys[i].dataType === 'agDateColumnFilter') { | ||
const dateVal = obj[keys[i].fieldName] ? new Date(obj[keys[i].fieldName]) : null; | ||
if(dateVal) { | ||
tempDataObj[keys[i].fieldName] = moment(dateVal).format("DD/MM/YYYY"); | ||
if(keys[i].dataType === 'agDateColumnFilter') { | ||
const dateVal = obj[keys[i].fieldName] ? new Date(obj[keys[i].fieldName]) : null; | ||
if(dateVal) { | ||
tempDataObj[keys[i].fieldName] = moment(dateVal).format("DD/MM/YYYY"); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
finalExportResultArray.push(tempDataObj); | ||
flagValue.map(eachVal => { | ||
let match = false; | ||
flagColumns.some(flagCol => { | ||
const typeOfVal = typeof(obj[flagCol.field]); | ||
match = checkFlagCondition(typeOfVal, eachVal, obj[flagCol.field]); | ||
if(match) return match | ||
}); | ||
tempDataObj[`Keyword - ${eachVal}`] = match; | ||
}) | ||
finalExportResultArray.push(tempDataObj); | ||
}); | ||
}); | ||
}); | ||
} | ||
@@ -876,2 +898,21 @@ currBatch = currBatch + 1; | ||
} | ||
function checkFlagCondition(type, flagVal, value) { | ||
switch (type) { | ||
case "string": | ||
if(value && flagVal && value.toLowerCase().indexOf(flagVal.toLowerCase()) >= 0) { | ||
return true; | ||
} else return true | ||
case "number": | ||
if(value && flagVal && value == flagVal) return true | ||
else return false; | ||
case "object": | ||
if(value && flagVal && value.some(str => str && str.toLowerCase().includes(flagVal.toLowerCase()))) { | ||
return true | ||
} else return false; | ||
default: return false; | ||
} | ||
} | ||
@@ -878,0 +919,0 @@ const getCSVDataByPages = async(req, startRow, endRow, res, dbModel)=>{ |
39008
834