UNPKG

dtable-utils

Version:

dtable common utils

103 lines (100 loc) 3.3 kB
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 };