dtable-utils
Version:
dtable common utils
103 lines (100 loc) • 3.3 kB
JavaScript
import { DateUtils } from '../../date.js';
import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
import { FILTER_TERM_MODIFIER_TYPE } from '../../constants/filter/filter-modifier.js';
/**
* Filter date
* @param {string} date
* @param {string} filter_predicate
* @param {string} filter_term_modifier
* @param {any} filter_term date string or number etc.
* @param {string|object} other_date date string or { startDate, endDate }
* @returns bool
*/
var dateFilter = function dateFilter(date, _ref) {
var filter_predicate = _ref.filter_predicate,
filter_term_modifier = _ref.filter_term_modifier,
filter_term = _ref.filter_term,
other_date = _ref.other_date;
switch (filter_predicate) {
case FILTER_PREDICATE_TYPE.IS:
{
return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || DateUtils.format(date) === other_date;
}
case FILTER_PREDICATE_TYPE.IS_WITHIN:
{
if (filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
return true;
}
if (!date) {
return false;
}
var startDate = other_date.startDate,
endDate = other_date.endDate;
var currentDate = DateUtils.format(date);
return currentDate >= startDate && currentDate <= endDate;
}
case FILTER_PREDICATE_TYPE.IS_BEFORE:
{
if (filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
return true;
}
if (!date || !DateUtils.getValidDate(date)) {
return false;
}
return DateUtils.format(date) < other_date;
}
case FILTER_PREDICATE_TYPE.IS_AFTER:
{
if (filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
return true;
}
if (!date || !DateUtils.getValidDate(date)) {
return false;
}
return DateUtils.format(date) > other_date;
}
case FILTER_PREDICATE_TYPE.IS_ON_OR_BEFORE:
{
if (filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
return true;
}
if (!date || !DateUtils.getValidDate(date)) {
return false;
}
return DateUtils.format(date) <= other_date;
}
case FILTER_PREDICATE_TYPE.IS_ON_OR_AFTER:
{
if (filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
return true;
}
if (!date || !DateUtils.getValidDate(date)) {
return false;
}
return DateUtils.format(date) >= other_date;
}
case FILTER_PREDICATE_TYPE.IS_NOT:
{
if (filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
return true;
}
if (!date || !DateUtils.getValidDate(date)) {
return false;
}
return DateUtils.format(date) !== other_date;
}
case FILTER_PREDICATE_TYPE.EMPTY:
{
return !(date && DateUtils.getValidDate(date));
}
case FILTER_PREDICATE_TYPE.NOT_EMPTY:
{
return !!(date && DateUtils.getValidDate(date));
}
default:
{
return false;
}
}
};
export { dateFilter };