nasigoreng
nasigoreng

Reputation: 11

Angular Filter by Date/Time Range

I'm trying to build an event date filter by passing in a time range. I was able to filter for events that are the same date as today but need help to filter events from last week, last month, etc...

$scope.eventDateFilter = function(column) {
    if(column === 'today') {
        $scope.dateRange = $scope.dateToday;
    } else if (column === 'pastWeek') {
        //need logic
    } else if (column === 'pastMonth') {
        //need logic            
    } else if (column === 'future') {
        //need logic
    } else {
        $scope.dateRange = "";
    }
}

Here's my fiddle: http://jsfiddle.net/c6BfQ/3/

Your help is greatly appreciated.

Upvotes: 0

Views: 2654

Answers (1)

Zack Argyle
Zack Argyle

Reputation: 8427

I would use a custom filter. Here is one I used to filter things created in the last two days, it should give you an idea of how to do yours.

.filter('dateFilter', function() {
  return function (objects) {
    var filtered_list = [];
    for (var i = 0; i < objects.length; i++) {
      var two_days_ago = new Date().getTime() - 2*24*60*60*1000;
      var last_modified = new Date(objects[i].date_created).getTime();
      if (two_days_ago <= last_modified) {
        filtered_list.push(objects[i]);
      }
    }
    return filtered_list;
  }
});

Upvotes: 2

Related Questions