New: Added new custom filters for Not in Last/Next for date filters (#4816)

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
This commit is contained in:
nitsua 2020-08-04 08:11:32 -04:00 committed by GitHub
parent 97980fe139
commit 9cb3ff238b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 4 deletions

View File

@ -3,7 +3,7 @@ import React, { Component } from 'react';
import NumberInput from 'Components/Form/NumberInput'; import NumberInput from 'Components/Form/NumberInput';
import SelectInput from 'Components/Form/SelectInput'; import SelectInput from 'Components/Form/SelectInput';
import TextInput from 'Components/Form/TextInput'; import TextInput from 'Components/Form/TextInput';
import { IN_LAST, IN_NEXT } from 'Helpers/Props/filterTypes'; import { IN_LAST, IN_NEXT, NOT_IN_LAST, NOT_IN_NEXT } from 'Helpers/Props/filterTypes';
import isString from 'Utilities/String/isString'; import isString from 'Utilities/String/isString';
import { NAME } from './FilterBuilderRowValue'; import { NAME } from './FilterBuilderRowValue';
import styles from './DateFilterBuilderRowValue.css'; import styles from './DateFilterBuilderRowValue.css';
@ -18,7 +18,12 @@ const timeOptions = [
]; ];
function isInFilter(filterType) { function isInFilter(filterType) {
return filterType === IN_LAST || filterType === IN_NEXT; return (
filterType === IN_LAST ||
filterType === NOT_IN_LAST ||
filterType === IN_NEXT ||
filterType === NOT_IN_NEXT
);
} }
class DateFilterBuilderRowValue extends Component { class DateFilterBuilderRowValue extends Component {

View File

@ -24,7 +24,9 @@ export const possibleFilterTypes = {
{ key: filterTypes.LESS_THAN, value: 'is before' }, { key: filterTypes.LESS_THAN, value: 'is before' },
{ key: filterTypes.GREATER_THAN, value: 'is after' }, { key: filterTypes.GREATER_THAN, value: 'is after' },
{ key: filterTypes.IN_LAST, value: 'in the last' }, { key: filterTypes.IN_LAST, value: 'in the last' },
{ key: filterTypes.IN_NEXT, value: 'in the next' } { key: filterTypes.NOT_IN_LAST, value: 'not in the last' },
{ key: filterTypes.IN_NEXT, value: 'in the next' },
{ key: filterTypes.NOT_IN_NEXT, value: 'not in the next' }
], ],
[EXACT]: [ [EXACT]: [

View File

@ -3,7 +3,9 @@ export const EQUAL = 'equal';
export const GREATER_THAN = 'greaterThan'; export const GREATER_THAN = 'greaterThan';
export const GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual'; export const GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';
export const IN_LAST = 'inLast'; export const IN_LAST = 'inLast';
export const NOT_IN_LAST = 'notInLast';
export const IN_NEXT = 'inNext'; export const IN_NEXT = 'inNext';
export const NOT_IN_NEXT = 'notInNext';
export const LESS_THAN = 'lessThan'; export const LESS_THAN = 'lessThan';
export const LESS_THAN_OR_EQUAL = 'lessThanOrEqual'; export const LESS_THAN_OR_EQUAL = 'lessThanOrEqual';
export const NOT_CONTAINS = 'notContains'; export const NOT_CONTAINS = 'notContains';
@ -17,5 +19,9 @@ export const all = [
LESS_THAN, LESS_THAN,
LESS_THAN_OR_EQUAL, LESS_THAN_OR_EQUAL,
NOT_CONTAINS, NOT_CONTAINS,
NOT_EQUAL NOT_EQUAL,
IN_LAST,
NOT_IN_LAST,
IN_NEXT,
NOT_IN_NEXT
]; ];

View File

@ -21,12 +21,22 @@ export default function(itemValue, filterValue, type) {
isBefore(itemValue) isBefore(itemValue)
); );
case filterTypes.NOT_IN_LAST:
return (
isBefore(itemValue, { [filterValue.time]: filterValue.value * -1 })
);
case filterTypes.IN_NEXT: case filterTypes.IN_NEXT:
return ( return (
isAfter(itemValue) && isAfter(itemValue) &&
isBefore(itemValue, { [filterValue.time]: filterValue.value }) isBefore(itemValue, { [filterValue.time]: filterValue.value })
); );
case filterTypes.NOT_IN_NEXT:
return (
isAfter(itemValue, { [filterValue.time]: filterValue.value })
);
default: default:
return false; return false;
} }