Search code examples
javascriptangularjsunderscore.jsngtable

ng-table filterFn on one column


I've been working with ng-table to create table with a custom filter using underscore.js. The filter works, but I only want to apply this filter on one column, on all the others the default filter will do just fine.

Currently this is what I have:

function testEngineerFilter(data, filterValues) {
            if (filterValues.testEngineer == null)
                // Return the default filter?
            return _.filter(data, function(testCase) {
                return _.some(testCase.testEngineers, function(testEngineer) { return testEngineer.id === filterValues.testEngineer; })
                    || _.some(testCase.preAssignedTestEngineers, function(testEngineer) { return testEngineer.id === filterValues.testEngineer; });
            });
        }

I think I should just be able to return the default filter after the if-statement, but I don't know where it's located. Any help would be appreciated!


Solution

  • Figured it out this morning. This is what I went with:

    function testEngineerFilter(data, filterValues) {
                if (filterValues.testEngineer != null) {
                    data = _.filter(data, function(t) {
                        return _.some(t.testEngineers, function(te) { return te.id === filterValues.testEngineer; })
                            || _.some(t.preAssignedTestEngineers, function(te) { return te.id === filterValues.testEngineer; });
                    });
                }
    
                // Remove testEngineer since it was filtered already
                delete filterValues.testEngineer;
                data = $filter('filter')(data, filterValues);
    
                return data;
            }