you can now play with number of items to add
This commit is contained in:
90
front-ui/app/stores/cartStore.js
Normal file
90
front-ui/app/stores/cartStore.js
Normal file
@@ -0,0 +1,90 @@
|
||||
var AppDispatcher = require('../dispatcher/appDispatcher');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var CartConstants = require('../constants/cartConstants');
|
||||
var _ = require('underscore');
|
||||
|
||||
var states = {
|
||||
}
|
||||
|
||||
|
||||
var loadCart = function() {
|
||||
|
||||
};
|
||||
|
||||
var addItem = function(itemId) {
|
||||
// TODO: push state to server side
|
||||
var state = states[itemId] || { count: 0 };
|
||||
state.count++;
|
||||
states[itemId] = state;
|
||||
};
|
||||
|
||||
var takeItemOut = function(itemId) {
|
||||
// TODO: push state to server side
|
||||
var state = states[itemId] || { count: 0 };
|
||||
if (state.count > 0) {
|
||||
state.count--;
|
||||
}
|
||||
states[itemId] = state;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
// Extend CartStore with EventEmitter to add eventing capabilities
|
||||
var CartStore = _.extend({}, EventEmitter.prototype, {
|
||||
|
||||
getStateFor: function(itemId) {
|
||||
// TODO: get from server side ?
|
||||
var state = states[itemId] || { count: 0 }
|
||||
return state
|
||||
},
|
||||
|
||||
// Emit Change event
|
||||
emitChange: function() {
|
||||
console.log("Emitting change!");
|
||||
this.emit('change');
|
||||
},
|
||||
|
||||
// Add change listener
|
||||
addChangeListener: function(callback) {
|
||||
this.on('change', callback);
|
||||
},
|
||||
|
||||
// Remove change listener
|
||||
removeChangeListener: function(callback) {
|
||||
this.removeListener('change', callback);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
// Register callback with AppDispatcher
|
||||
AppDispatcher.register(function(payload) {
|
||||
var action = payload.action;
|
||||
var text;
|
||||
|
||||
switch (action.actionType) {
|
||||
|
||||
case CartConstants.LOAD:
|
||||
loadCart();
|
||||
break;
|
||||
|
||||
case CartConstants.ADD_ITEM:
|
||||
addItem(action.itemId);
|
||||
break;
|
||||
|
||||
case CartConstants.TAKE_ITEM_OUT:
|
||||
takeItemOut(action.itemId);
|
||||
break;
|
||||
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
// If action was responded to, emit change event
|
||||
CartStore.emitChange();
|
||||
return true;
|
||||
|
||||
});
|
||||
|
||||
module.exports = CartStore;
|
||||
Reference in New Issue
Block a user