work in progress, several bugs

This commit is contained in:
Edin Dazdarevic
2015-02-12 07:35:48 +01:00
parent 2ec8721920
commit 2dc5572cb1
5 changed files with 37 additions and 14 deletions

View File

@@ -7,6 +7,12 @@ var FilterCriteriaActions = {
actionType: FilterCriteriaConstants.CLEAR_CATEGORY_FILTERS actionType: FilterCriteriaConstants.CLEAR_CATEGORY_FILTERS
}); });
}, },
setAppliedCategoryFilters: function(filters) {
AppDispatcher.handleAction({
actionType: FilterCriteriaConstants.SET_APPLIED_CATEGORY_FILTER,
filters: filters
});
},
addAppliedCategoryFilter: function(name, value) { addAppliedCategoryFilter: function(name, value) {
AppDispatcher.handleAction({ AppDispatcher.handleAction({
actionType: FilterCriteriaConstants.ADD_APPLIED_CATEGORY_FILTER, actionType: FilterCriteriaConstants.ADD_APPLIED_CATEGORY_FILTER,

View File

@@ -24,14 +24,17 @@ var NavigationActions = {
goToCategory: function(category,section, query) { goToCategory: function(category,section, query) {
var url ='/sekcija/' + section.get('name') +'/kategorija/'+ category.get('id') + '/' + category.get('name'); var url ='/sekcija/' + section.get('name') +'/kategorija/'+ category.get('id') + '/' + category.get('name');
q = ''; var q = '';
if(query) { if(query) {
q = '?'; var qp = [];
for(var key in query) { for(var key in query) {
if (query.hasOwnProperty(key)) { if (query.hasOwnProperty(key)) {
q += "&" + key + '=' + query[key]; qp.push(key + '=' + query[key]);
} }
} }
if (qp.length > 0) {
q = '?' + qp.join('&');
}
} }
AppDispatcher.handleAction({ AppDispatcher.handleAction({
actionType: NavigationConstants.CHANGE_URL, actionType: NavigationConstants.CHANGE_URL,

View File

@@ -31,14 +31,14 @@ var ByCategory = React.createClass({
var category = this.state.category; var category = this.state.category;
FilterCriteriaActions.addAppliedCategoryFilter(fc.field_name, fcv.filter_value); FilterCriteriaActions.addAppliedCategoryFilter(fc.field_name, fcv.filter_value);
NavigationActions.goToCategory(category, section, q) //NavigationActions.goToCategory(category, section, q)
}, },
removeAppliedFilter: function(name) { removeAppliedFilter: function(name) {
FilterCriteriaActions.removeAppliedCategoryFilter(name); FilterCriteriaActions.removeAppliedCategoryFilter(name);
var section = new Section(this.state.category.get('section')); //var section = new Section(this.state.category.get('section'));
var category = this.state.category; //var category = this.state.category;
var q = {}; //var q = {};
NavigationActions.goToCategory(category, section, q); //NavigationActions.goToCategory(category, section, q);
}, },
render: function() { render: function() {
@@ -99,13 +99,16 @@ var ByCategory = React.createClass({
return filters; return filters;
}, },
componentWillReceiveProps: function() { componentWillReceiveProps: function() {
console.log("RECEIVING PROPS!!!!!!!!!!!!!!!!!!!!!!!!");
var categoryId = this.getParams().id; var categoryId = this.getParams().id;
ItemActions.loadByCategory(categoryId, FilterCriteriaStore.getAppliedCategoryFilters()); ItemActions.loadByCategory(categoryId, FilterCriteriaStore.getAppliedCategoryFilters());
CategoryActions.loadCategoryDetails(categoryId); CategoryActions.loadCategoryDetails(categoryId);
}, },
componentDidMount: function() { componentDidMount: function() {
var categoryId = this.getParams().id; var categoryId = this.getParams().id;
//var query = this.getQuery();
//FilterCriteriaActions.setAppliedCategoryFilters(query);
ItemActions.loadByCategory(categoryId, this.getQuery()); ItemActions.loadByCategory(categoryId, this.getQuery());
CategoryActions.loadCategoryDetails(categoryId); CategoryActions.loadCategoryDetails(categoryId);
@@ -121,14 +124,17 @@ var ByCategory = React.createClass({
}, },
_onAppliedFiltersChange: function() { _onAppliedFiltersChange: function() {
if(this.isMounted()) { if(this.isMounted()) {
console.log('FILTERS CHANGING: ', FilterCriteriaStore.getAppliedCategoryFilters());
this.setState({ this.setState({
appliedCategoryFilters: FilterCriteriaStore.getAppliedCategoryFilters() 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() { _onChange: function() {

View File

@@ -4,5 +4,6 @@ var keyMirror = require('react/lib/keyMirror');
module.exports = keyMirror({ module.exports = keyMirror({
CLEAR_CATEGORY_FILTERS: null, CLEAR_CATEGORY_FILTERS: null,
ADD_APPLIED_CATEGORY_FILTER: null, ADD_APPLIED_CATEGORY_FILTER: null,
REMOVE_APPLIED_CATEGORY_FILTER: null REMOVE_APPLIED_CATEGORY_FILTER: null,
SET_APPLIED_CATEGORY_FILTERS: null
}); });

View File

@@ -15,6 +15,10 @@ var addAppliedCategoryFilter = function(name, value) {
_appliedCategoryFilters[name] = value; _appliedCategoryFilters[name] = value;
}; };
var setAppliedCategoryFilters = function(filters) {
_appliedCategoryFilters = filters;
};
var removeAppliedCategoryFilter = function(name) { var removeAppliedCategoryFilter = function(name) {
delete _appliedCategoryFilters[name]; delete _appliedCategoryFilters[name];
}; };
@@ -70,6 +74,9 @@ AppDispatcher.register(function(payload) {
case FilterCriteriaConstants.REMOVE_APPLIED_CATEGORY_FILTER: case FilterCriteriaConstants.REMOVE_APPLIED_CATEGORY_FILTER:
removeAppliedCategoryFilter(action.name); removeAppliedCategoryFilter(action.name);
break; break;
case FilterCriteriaConstants.SET_APPLIED_CATEGORY_FILTERS:
setAppliedCategoryFilters(action.filters);
break;
default: default:
return true; return true;
} }