From 81e0170be7171f58cfaed0751e1e20cbb9c286a5 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Wed, 7 Jun 2023 11:10:29 -0500 Subject: [PATCH] Basic support for relative date-time expressions on Date fields --- src/qqq/utils/qqq/FilterUtils.ts | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/qqq/utils/qqq/FilterUtils.ts b/src/qqq/utils/qqq/FilterUtils.ts index 0aebaf7..8c7f1d5 100644 --- a/src/qqq/utils/qqq/FilterUtils.ts +++ b/src/qqq/utils/qqq/FilterUtils.ts @@ -474,6 +474,53 @@ class FilterUtils } } + if (field && field.type == "DATE" && !values) + { + try + { + const criteria = filterJSON.criteria[i]; + if (criteria && criteria.expression) + { + let value = new Date(); + let amount = Number(criteria.expression.amount); + switch (criteria.expression.timeUnit) + { + case "MINUTES": + { + amount = amount * 60; + break; + } + case "HOURS": + { + amount = amount * 60 * 60; + break; + } + case "DAYS": + { + amount = amount * 60 * 60 * 24; + break; + } + default: + { + console.log("Unrecognized time unit: " + criteria.expression.timeUnit); + } + } + + if (criteria.expression.operator == "MINUS") + { + amount = -amount; + } + + value.setTime(value.getTime() + 1000 * amount); + values = [ValueUtils.formatDateISO8601(value)]; + } + } + catch (e) + { + console.log(e); + } + } + defaultFilter.items.push({ columnField: criteria.fieldName, operatorValue: FilterUtils.qqqCriteriaOperatorToGrid(criteria.operator, field, values),