started with cart design
removing of items from cart now possible
This commit is contained in:
@@ -13,7 +13,7 @@ var CartActions = {
|
|||||||
addNItems: function(item, count) {
|
addNItems: function(item, count) {
|
||||||
AppDispatcher.handleAction({
|
AppDispatcher.handleAction({
|
||||||
actionType: CartConstants.ADD_N_ITEMS,
|
actionType: CartConstants.ADD_N_ITEMS,
|
||||||
item: item,
|
item: item,
|
||||||
count: count
|
count: count
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -42,7 +42,14 @@ var CartActions = {
|
|||||||
AppDispatcher.handleAction({
|
AppDispatcher.handleAction({
|
||||||
actionType: CartConstants.CONFIRM_DELIVERY,
|
actionType: CartConstants.CONFIRM_DELIVERY,
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
takeItemOut: function(id) {
|
||||||
|
AppDispatcher.handleAction({
|
||||||
|
actionType: CartConstants.TAKE_ITEM_OUT,
|
||||||
|
itemId: id
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = CartActions;
|
module.exports = CartActions;
|
||||||
|
|||||||
@@ -7,32 +7,52 @@ var React = require('react'),
|
|||||||
Globals = require('../../globals'),
|
Globals = require('../../globals'),
|
||||||
LinkBanner = require('../linkBanner/linkBanner'),
|
LinkBanner = require('../linkBanner/linkBanner'),
|
||||||
CartTotal = require('./cartTotal');
|
CartTotal = require('./cartTotal');
|
||||||
|
|
||||||
|
|
||||||
var Router = require('react-router');
|
var Router = require('react-router');
|
||||||
|
|
||||||
|
|
||||||
var CartPage = React.createClass({
|
var CartPage = React.createClass({
|
||||||
|
_onTakeItemOut: function(itemId) {
|
||||||
|
CartActions.takeItemOut(itemId);
|
||||||
|
},
|
||||||
render: function() {
|
render: function() {
|
||||||
|
var counts = this.state.itemCounts;
|
||||||
var counts = this.state.itemCounts;
|
var self = this;
|
||||||
|
var displayedItems = this.state.items.filter(function(i) {
|
||||||
var displayedItems = this.state.items.map(function (i) {
|
if(!counts) return false;
|
||||||
|
var count = counts[i.get('id')].get('count');
|
||||||
|
return count > 0;
|
||||||
|
}).map(function (i) {
|
||||||
var count = counts[i.get('id')].get('count');
|
var count = counts[i.get('id')].get('count');
|
||||||
var price = i.get('list_price');
|
var price = i.get('list_price');
|
||||||
|
var firstImage = i.get('multi_media_descriptions')[0];
|
||||||
|
firstImage = firstImage || { resized_url: "https://res.cloudinary.com/lfvt7ps2n/image/upload/c_fit,h_172,w_226/v1421732950/http_www.asms.ru_bitrix_templates_main_images_nophoto_irnofq.png" } ;
|
||||||
return (
|
return (
|
||||||
|
<tr key={i.get('id')}>
|
||||||
<div key={i.get('id')} className="row cart-items">
|
<td>
|
||||||
<div className="col-md-3"><SingleItem item={i} hidePrice={true}/> </div>
|
<img style={{maxWidth: '90px', maxHeight: '90px'}} src={firstImage.url} alt="product image"/>
|
||||||
<div className="col-md-2"> { Globals.FormatCurrency(price) }</div>
|
</td>
|
||||||
<div className="col-md-3">
|
|
||||||
42 </div>
|
|
||||||
<div className="col-md-2"> { Globals.FormatCurrency(count * price) }</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
)
|
<td>
|
||||||
|
<p> {i.get('brand').name}</p>
|
||||||
|
<p>
|
||||||
|
{i.get('name')}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>{ Globals.FormatCurrency(price) }</td>
|
||||||
|
<td>
|
||||||
|
<input style={{textAlign: 'center'}} className="form-control qty-box" type='text' value={count}></input>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{ Globals.FormatCurrency(count * price) }
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button onClick={self._onTakeItemOut.bind(self, i.get('id'))}>Ukloni iz korpe</button>
|
||||||
|
</td>
|
||||||
|
</tr>)
|
||||||
});
|
});
|
||||||
|
|
||||||
var deliveryDestination = (<span></span>);
|
var deliveryDestination = (<span></span>);
|
||||||
@@ -40,22 +60,29 @@ var CartPage = React.createClass({
|
|||||||
if (this.state.destinationValid) {
|
if (this.state.destinationValid) {
|
||||||
deliveryDestination = (
|
deliveryDestination = (
|
||||||
<div>
|
<div>
|
||||||
Na adresu {this.state.deliveryDestination.name},
|
Na adresu {this.state.deliveryDestination.name},
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var cartTotal = (
|
|
||||||
<div className="row cart-total">
|
var cartTotal = (
|
||||||
<CartTotal items={this.state.items} itemCounts={this.state.itemCounts} deliveryCosts={this.state.deliveryCosts}/>
|
<div>
|
||||||
<div className="col-md-1 span1">
|
|
||||||
<button className="btn btn-warning" onClick={this._onOrderClick}>Izgleda OK</button>
|
<div className="row cart-total">
|
||||||
|
<div className="col-lg-6">Ukupno</div>
|
||||||
|
<div className="col-lg-6">
|
||||||
|
<CartTotal items={this.state.items} itemCounts={this.state.itemCounts} deliveryCosts={this.state.deliveryCosts}/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-lg-12 pull-right">
|
||||||
|
<button className="btn btn-warning" onClick={this._onOrderClick}>Završi narudžbu</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
var buySomethingMessage = (<div></div>);
|
var buySomethingMessage = (<div></div>);
|
||||||
@@ -64,20 +91,35 @@ var CartPage = React.createClass({
|
|||||||
cartTotal = (<div></div>)
|
cartTotal = (<div></div>)
|
||||||
buySomethingMessage = (<div>Nemate ni jedan artikal u vašoj korpi. Kada vidite nešto što vam se sviđa - pritisnite dugme KUPI pored artikla kako biste ga dodali u korpu. </div>)
|
buySomethingMessage = (<div>Nemate ni jedan artikal u vašoj korpi. Kada vidite nešto što vam se sviđa - pritisnite dugme KUPI pored artikla kako biste ga dodali u korpu. </div>)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<div className="cart-page center">
|
<div className="col-lg-12">
|
||||||
<LinkBanner locationName="thankYouPage" />
|
<LinkBanner locationName="thankYouPage" />
|
||||||
{cartTotal}
|
<div className="cart-title">KORPA</div>
|
||||||
{displayedItems}
|
|
||||||
|
<table className="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className="col-lg-2"></th>
|
||||||
|
<th>Proizvod</th>
|
||||||
|
<th>Cijena</th>
|
||||||
|
<th className="col-lg-1">Količina</th>
|
||||||
|
<th>Ukupna cijena</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{displayedItems}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
{buySomethingMessage}
|
{buySomethingMessage}
|
||||||
{cartTotal}
|
{cartTotal}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -104,8 +146,7 @@ var CartPage = React.createClass({
|
|||||||
getInitialState: function () {
|
getInitialState: function () {
|
||||||
return CartStore.getWholeCartState();
|
return CartStore.getWholeCartState();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
module.exports = CartPage;
|
module.exports = CartPage;
|
||||||
|
|||||||
@@ -493,6 +493,12 @@ text-decoration: none;
|
|||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.qty-box {
|
||||||
|
background-color: #efefef;
|
||||||
|
border-radius: 0px;
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
.left-inner-addon {
|
.left-inner-addon {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@@ -504,3 +510,8 @@ text-decoration: none;
|
|||||||
padding: 10px 12px;
|
padding: 10px 12px;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cart-title {
|
||||||
|
font-size: 29px;
|
||||||
|
color: #06c3c3;
|
||||||
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ var _cartDataLoadCalled = false;
|
|||||||
|
|
||||||
var loadCart = function() {
|
var loadCart = function() {
|
||||||
|
|
||||||
states = {};
|
states = {};
|
||||||
_itemsInCart.fetch({
|
_itemsInCart.fetch({
|
||||||
success: function() {
|
success: function() {
|
||||||
states = {}
|
states = {}
|
||||||
@@ -46,7 +46,7 @@ var loadCart = function() {
|
|||||||
CartActions.dataLoaded();
|
CartActions.dataLoaded();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
_deliveryDestination.fetch({
|
_deliveryDestination.fetch({
|
||||||
success: function() {
|
success: function() {
|
||||||
validateDeliveryDestinationForm();
|
validateDeliveryDestinationForm();
|
||||||
@@ -56,8 +56,8 @@ var loadCart = function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
_cartDataLoadCalled = true;
|
_cartDataLoadCalled = true;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var fetchPlace = function() {
|
var fetchPlace = function() {
|
||||||
@@ -82,8 +82,8 @@ var saveCartStateForItem = function(itemId) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/* need it for delete - will delete it later
|
/* need it for delete - will delete it later
|
||||||
|
*/
|
||||||
var takeItemOut = function(itemId) {
|
var takeItemOut = function(itemId) {
|
||||||
|
|
||||||
var state = states[itemId] || new ItemInCart({
|
var state = states[itemId] || new ItemInCart({
|
||||||
@@ -91,13 +91,14 @@ var takeItemOut = function(itemId) {
|
|||||||
count: 0
|
count: 0
|
||||||
})
|
})
|
||||||
if (state.get('count') > 0) {
|
if (state.get('count') > 0) {
|
||||||
state.set('count', state.get('count') - 1);
|
// state.set('count', state.get('count') - 1);
|
||||||
|
state.set('count', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
states[itemId] = state;
|
states[itemId] = state;
|
||||||
saveCartStateForItem(itemId);
|
saveCartStateForItem(itemId);
|
||||||
};
|
};
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
var addNItems = function(item, count) {
|
var addNItems = function(item, count) {
|
||||||
|
|
||||||
@@ -108,7 +109,7 @@ var addNItems = function(item, count) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
_itemsForDisplay.add(item);
|
_itemsForDisplay.add(item);
|
||||||
|
|
||||||
state.set('count', state.get('count') + count);
|
state.set('count', state.get('count') + count);
|
||||||
|
|
||||||
states[itemId] = state;
|
states[itemId] = state;
|
||||||
@@ -268,11 +269,6 @@ AppDispatcher.register(function(payload) {
|
|||||||
case CartConstants.LOAD_CART_CONTENTS:
|
case CartConstants.LOAD_CART_CONTENTS:
|
||||||
loadCart();
|
loadCart();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CartConstants.ADD_ITEM:
|
|
||||||
addItem(action.itemId);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CartConstants.TAKE_ITEM_OUT:
|
case CartConstants.TAKE_ITEM_OUT:
|
||||||
takeItemOut(action.itemId);
|
takeItemOut(action.itemId);
|
||||||
break;
|
break;
|
||||||
@@ -303,4 +299,4 @@ AppDispatcher.register(function(payload) {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = CartStore;
|
module.exports = CartStore;
|
||||||
|
|||||||
Reference in New Issue
Block a user