buildFilter: function()

in src/data-table/column-datetime.tsx [595:640]


    buildFilter: function (params) {
      return function (data) {
        let included = true;
        if (params.operation === DATETIME_OPERATIONS.YEAR) {
          included = params.selection.includes(getYear(data));
        } else if (params.operation === DATETIME_OPERATIONS.HALF) {
          const month = getMonth(data);
          const half = month < 6 ? 0 : 1;
          included = params.selection.includes(half);
        } else if (params.operation === DATETIME_OPERATIONS.QUARTER) {
          // date-fns quarters are 1 indexed
          const quarter = getQuarter(data) - 1;
          included = params.selection.includes(quarter);
        } else if (params.operation === DATETIME_OPERATIONS.MONTH) {
          included = params.selection.includes(getMonth(data));
        } else if (params.operation === DATETIME_OPERATIONS.WEEKDAY) {
          included = params.selection.includes(getDay(data));
        }

        if (
          params.operation === DATETIME_OPERATIONS.RANGE_DATE ||
          params.operation === DATETIME_OPERATIONS.RANGE_TIME ||
          params.operation === DATETIME_OPERATIONS.RANGE_DATETIME
        ) {
          let [left, right] = params.range;

          if (params.operation === DATETIME_OPERATIONS.RANGE_DATE) {
            left = set(left, { hours: 0, minutes: 0, seconds: 0 });
            right = set(right, { hours: 0, minutes: 0, seconds: 0 });
            data = set(data, { hours: 0, minutes: 0, seconds: 0 });
          }

          if (params.operation === DATETIME_OPERATIONS.RANGE_TIME) {
            left = set(left, { year: 2000, month: 1, date: 1 });
            right = set(right, { year: 2000, month: 1, date: 1 });
            data = set(data, { year: 2000, month: 1, date: 1 });
          }

          const after = isAfter(data, left) || isEqual(data, left);
          const before = isBefore(data, right) || isEqual(data, right);
          included = after && before;
        }

        return params.exclude ? !included : included;
      };
    },