From 89900cebcf6e739758ea8030320a15c1c4afb687 Mon Sep 17 00:00:00 2001 From: Daniel Friedman Date: Tue, 5 Apr 2016 11:39:39 -0400 Subject: [PATCH] Update getActivefilterfields, add getFilterFieldValue --- src/js/pagination/paging-collection.js | 28 +++++++++++++++---- .../specs/paging-collection-spec.js | 14 +++++++++- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/js/pagination/paging-collection.js b/src/js/pagination/paging-collection.js index 765ac02f..f37b6528 100644 --- a/src/js/pagination/paging-collection.js +++ b/src/js/pagination/paging-collection.js @@ -302,14 +302,30 @@ }, /** - * Gets an array of currently active (applied) filters. - * @returns {Array} An array of filter field names which are - * currently applied to the collection. + * Gets an object of currently active (applied) filters. + * @returns {Object} An object mapping the names of + * currently active filter fields to their values. */ getActiveFilterFields: function () { - return _.chain(this.filterableFields).pick(function (fieldData, fieldName) { - return !_.isNull(fieldData.value) && !_.isUndefined(fieldData.value); - }).keys().value(); + return _.chain(this.filterableFields) + .pick(function (fieldData, fieldName) { + return !_.isNull(fieldData.value) && !_.isUndefined(fieldData.value); + }) + .mapObject(function (data) { + return data.value; + }) + .value(); + }, + + /** + * Gets the value of the given filter field. + * + * @returns {String} the current value of the requested + * filter field. null or undefined means that the + * filter field is not active. + */ + getFilterFieldValue: function (filterFieldName) { + return this.getActiveFilterFields()[filterFieldName]; }, /** diff --git a/src/js/pagination/specs/paging-collection-spec.js b/src/js/pagination/specs/paging-collection-spec.js index 92a3db3d..6a801aed 100644 --- a/src/js/pagination/specs/paging-collection-spec.js +++ b/src/js/pagination/specs/paging-collection-spec.js @@ -150,7 +150,19 @@ define(['jquery', collection.registerFilterableField('test_field_3', 'Test Field 3'); collection.setFilterField('test_field_1', 'test_value_1'); collection.setFilterField('test_field_3', 'test_value_3'); - expect(collection.getActiveFilterFields()).toEqual(['test_field_1', 'test_field_3']); + expect(collection.getActiveFilterFields()) + .toEqual({test_field_1: 'test_value_1', test_field_3: 'test_value_3'}); + }); + + it('can get the value of a particular filter field', function () { + collection.registerFilterableField('test_field_1', 'Test Field 1'); + collection.registerFilterableField('test_field_2', 'Test Field 2'); + collection.setFilterField('test_field_1', 'test_value_1'); + expect(collection.getFilterFieldValue('test_field_1')).toEqual('test_value_1'); + collection.unsetFilterField('test_field_1'); + expect(collection.getFilterFieldValue('test_field_1')).toBe(undefined); + expect(collection.getFilterFieldValue('test_field_2')).toBe(undefined); + expect(collection.getFilterFieldValue('no_such_field')).toBe(undefined); }); it('can set the sort direction', AjaxHelpers.requests(