From 2dc5572cb1186c3dcd34a5a58a14d25eaab075b4 Mon Sep 17 00:00:00 2001 From: Edin Dazdarevic Date: Thu, 12 Feb 2015 07:35:48 +0100 Subject: [PATCH] work in progress, several bugs --- front-ui/app/actions/filterCriteriaActions.js | 6 +++++ front-ui/app/actions/navigationActions.js | 9 ++++--- .../app/components/browsing/byCategory.js | 26 ++++++++++++------- .../app/constants/filterCriteriaConstants.js | 3 ++- front-ui/app/stores/filterCriteriaStore.js | 7 +++++ 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/front-ui/app/actions/filterCriteriaActions.js b/front-ui/app/actions/filterCriteriaActions.js index 9594254..9dbbe85 100644 --- a/front-ui/app/actions/filterCriteriaActions.js +++ b/front-ui/app/actions/filterCriteriaActions.js @@ -7,6 +7,12 @@ var FilterCriteriaActions = { actionType: FilterCriteriaConstants.CLEAR_CATEGORY_FILTERS }); }, + setAppliedCategoryFilters: function(filters) { + AppDispatcher.handleAction({ + actionType: FilterCriteriaConstants.SET_APPLIED_CATEGORY_FILTER, + filters: filters + }); + }, addAppliedCategoryFilter: function(name, value) { AppDispatcher.handleAction({ actionType: FilterCriteriaConstants.ADD_APPLIED_CATEGORY_FILTER, diff --git a/front-ui/app/actions/navigationActions.js b/front-ui/app/actions/navigationActions.js index 76ae99b..7f68e0c 100644 --- a/front-ui/app/actions/navigationActions.js +++ b/front-ui/app/actions/navigationActions.js @@ -24,14 +24,17 @@ var NavigationActions = { goToCategory: function(category,section, query) { var url ='/sekcija/' + section.get('name') +'/kategorija/'+ category.get('id') + '/' + category.get('name'); - q = ''; + var q = ''; if(query) { - q = '?'; + var qp = []; for(var key in query) { if (query.hasOwnProperty(key)) { - q += "&" + key + '=' + query[key]; + qp.push(key + '=' + query[key]); } } + if (qp.length > 0) { + q = '?' + qp.join('&'); + } } AppDispatcher.handleAction({ actionType: NavigationConstants.CHANGE_URL, diff --git a/front-ui/app/components/browsing/byCategory.js b/front-ui/app/components/browsing/byCategory.js index b27afe6..21e2948 100644 --- a/front-ui/app/components/browsing/byCategory.js +++ b/front-ui/app/components/browsing/byCategory.js @@ -31,14 +31,14 @@ var ByCategory = React.createClass({ var category = this.state.category; FilterCriteriaActions.addAppliedCategoryFilter(fc.field_name, fcv.filter_value); - NavigationActions.goToCategory(category, section, q) + //NavigationActions.goToCategory(category, section, q) }, removeAppliedFilter: function(name) { FilterCriteriaActions.removeAppliedCategoryFilter(name); - var section = new Section(this.state.category.get('section')); - var category = this.state.category; - var q = {}; - NavigationActions.goToCategory(category, section, q); + //var section = new Section(this.state.category.get('section')); + //var category = this.state.category; + //var q = {}; + //NavigationActions.goToCategory(category, section, q); }, render: function() { @@ -99,13 +99,16 @@ var ByCategory = React.createClass({ return filters; }, componentWillReceiveProps: function() { - console.log("RECEIVING PROPS!!!!!!!!!!!!!!!!!!!!!!!!"); var categoryId = this.getParams().id; ItemActions.loadByCategory(categoryId, FilterCriteriaStore.getAppliedCategoryFilters()); CategoryActions.loadCategoryDetails(categoryId); }, componentDidMount: function() { var categoryId = this.getParams().id; + + //var query = this.getQuery(); + //FilterCriteriaActions.setAppliedCategoryFilters(query); + ItemActions.loadByCategory(categoryId, this.getQuery()); CategoryActions.loadCategoryDetails(categoryId); @@ -121,14 +124,17 @@ var ByCategory = React.createClass({ }, _onAppliedFiltersChange: function() { if(this.isMounted()) { - console.log('FILTERS CHANGING: ', FilterCriteriaStore.getAppliedCategoryFilters()); this.setState({ appliedCategoryFilters: FilterCriteriaStore.getAppliedCategoryFilters() }); - var categoryId = this.getParams().id; - //ItemActions.loadByCategory(categoryId, FilterCriteriaStore.getAppliedCategoryFilters()); - //CategoryActions.loadCategoryDetails(categoryId); + var section = new Section(this.state.category.get('section')); + var category = this.state.category; + + // TODO: investigate how to do this without setTimeout call + setTimeout(function(){ + NavigationActions.goToCategory(category, section, this.state.appliedCategoryFilters); + }.bind(this),0); } }, _onChange: function() { diff --git a/front-ui/app/constants/filterCriteriaConstants.js b/front-ui/app/constants/filterCriteriaConstants.js index 5c69495..fe62727 100644 --- a/front-ui/app/constants/filterCriteriaConstants.js +++ b/front-ui/app/constants/filterCriteriaConstants.js @@ -4,5 +4,6 @@ var keyMirror = require('react/lib/keyMirror'); module.exports = keyMirror({ CLEAR_CATEGORY_FILTERS: null, ADD_APPLIED_CATEGORY_FILTER: null, - REMOVE_APPLIED_CATEGORY_FILTER: null + REMOVE_APPLIED_CATEGORY_FILTER: null, + SET_APPLIED_CATEGORY_FILTERS: null }); diff --git a/front-ui/app/stores/filterCriteriaStore.js b/front-ui/app/stores/filterCriteriaStore.js index 2ea81fb..3c2de09 100644 --- a/front-ui/app/stores/filterCriteriaStore.js +++ b/front-ui/app/stores/filterCriteriaStore.js @@ -15,6 +15,10 @@ var addAppliedCategoryFilter = function(name, value) { _appliedCategoryFilters[name] = value; }; +var setAppliedCategoryFilters = function(filters) { + _appliedCategoryFilters = filters; +}; + var removeAppliedCategoryFilter = function(name) { delete _appliedCategoryFilters[name]; }; @@ -70,6 +74,9 @@ AppDispatcher.register(function(payload) { case FilterCriteriaConstants.REMOVE_APPLIED_CATEGORY_FILTER: removeAppliedCategoryFilter(action.name); break; + case FilterCriteriaConstants.SET_APPLIED_CATEGORY_FILTERS: + setAppliedCategoryFilters(action.filters); + break; default: return true; }