cart state for item in details page finnaly shows (arrggh worst kind of bugs)
This commit is contained in:
@@ -1,30 +1,60 @@
|
||||
var AppDispatcher = require('../dispatcher/appDispatcher');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var CartConstants = require('../constants/cartConstants');
|
||||
var CartActions = require('../actions/cartActions');
|
||||
var ItemInCart = require('../models/itemInCart');
|
||||
var ItemInCartCollection = require('../models/itemInCartCollection');
|
||||
var _ = require('underscore');
|
||||
|
||||
var states = {
|
||||
}
|
||||
var states = {}
|
||||
|
||||
var _itemsInCart = new ItemInCartCollection();
|
||||
|
||||
|
||||
var loadCart = function() {
|
||||
|
||||
_itemsInCart.fetch({
|
||||
success: function() {
|
||||
states = {}
|
||||
for (var i = 0; i < _itemsInCart.models.length; i++) {
|
||||
var itemInCart = _itemsInCart.models[i];
|
||||
states[itemInCart.get('item_id')] = itemInCart;
|
||||
}
|
||||
CartActions.dataLoaded();
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
var addItem = function(itemId) {
|
||||
// TODO: push state to server side
|
||||
var state = states[itemId] || { count: 0 };
|
||||
state.count++;
|
||||
|
||||
var state = states[itemId] || new ItemInCart({
|
||||
item_id: itemId,
|
||||
count: 0
|
||||
})
|
||||
state.set('count', state.get('count') + 1);
|
||||
states[itemId] = state;
|
||||
state.save({
|
||||
success: function () {
|
||||
CartActions.dataLoaded();
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
var takeItemOut = function(itemId) {
|
||||
// TODO: push state to server side
|
||||
var state = states[itemId] || { count: 0 };
|
||||
if (state.count > 0) {
|
||||
state.count--;
|
||||
|
||||
var state = states[itemId] || new ItemInCart({
|
||||
item_id: itemId,
|
||||
count: 0
|
||||
})
|
||||
if (state.get('count') > 0) {
|
||||
state.set('count', state.get('count') - 1);
|
||||
}
|
||||
states[itemId] = state;
|
||||
state.save({
|
||||
success: function () {
|
||||
CartActions.dataLoaded();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -34,14 +64,18 @@ var takeItemOut = function(itemId) {
|
||||
var CartStore = _.extend({}, EventEmitter.prototype, {
|
||||
|
||||
getStateFor: function(itemId) {
|
||||
// TODO: get from server side ?
|
||||
var state = states[itemId] || { count: 0 }
|
||||
return state
|
||||
|
||||
// TODO: get from server side ?
|
||||
var state = states[itemId] || new ItemInCart({
|
||||
item_id: itemId,
|
||||
count: 0
|
||||
})
|
||||
return state
|
||||
},
|
||||
|
||||
// Emit Change event
|
||||
emitChange: function() {
|
||||
console.log("Emitting change!");
|
||||
console.log("Emitting cart change!");
|
||||
this.emit('change');
|
||||
},
|
||||
|
||||
@@ -65,7 +99,7 @@ AppDispatcher.register(function(payload) {
|
||||
|
||||
switch (action.actionType) {
|
||||
|
||||
case CartConstants.LOAD:
|
||||
case CartConstants.LOAD_CART_CONTENTS:
|
||||
loadCart();
|
||||
break;
|
||||
|
||||
@@ -76,6 +110,9 @@ AppDispatcher.register(function(payload) {
|
||||
case CartConstants.TAKE_ITEM_OUT:
|
||||
takeItemOut(action.itemId);
|
||||
break;
|
||||
case CartConstants.CART_DATA_LOADED:
|
||||
// just emit change
|
||||
break;
|
||||
|
||||
default:
|
||||
return true;
|
||||
@@ -87,4 +124,4 @@ AppDispatcher.register(function(payload) {
|
||||
|
||||
});
|
||||
|
||||
module.exports = CartStore;
|
||||
module.exports = CartStore;
|
||||
@@ -29,9 +29,9 @@ var fetchItemWithDetails = function() {
|
||||
var item = new ItemWithDetails({
|
||||
id: id
|
||||
});
|
||||
_itemWithDetails = item;
|
||||
item.fetch({
|
||||
success: function() {
|
||||
_itemWithDetails = item;
|
||||
_images = (_itemWithDetails.get("multi_media_descriptions") || []).map(function(mmd) {
|
||||
return mmd.url;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user