Small cart quantity fixes

master
Mark Moffat 2018-05-21 23:06:12 +09:30
parent abc5de8ff6
commit c674f86576
8 changed files with 39 additions and 16 deletions

3
.gitignore vendored
View File

@ -1,4 +1,5 @@
node_modules/
data/
config/settings.json
.vscode
.vscode
**.DS_Store

6
app.js
View File

@ -249,6 +249,12 @@ app.use((req, res, next) => {
next();
});
// Ran on all routes
app.use((req, res, next) => {
res.setHeader('Cache-Control', 'no-cache, no-store');
next();
});
// setup the routes
app.use('/', index);
app.use('/', customer);

View File

@ -142,6 +142,10 @@ $(document).ready(function (){
cartUpdate(qtyElement);
});
$(document).on('click', '.btn-delete-from-cart', function(e){
deleteFromCart($(e.target));
});
$(document).on('click', '.orderFilterByStatus', function(e){
e.preventDefault();
window.location = '/admin/orders/bystatus/' + $('#orderStatusFilter').val();
@ -457,6 +461,10 @@ $(document).ready(function (){
$(document).on('click', '.product-add-to-cart', function(e){
var productOptions = getSelectedOptions();
if(parseInt($('#product_quantity').val()) < 0){
$('#product_quantity').val(0);
}
$.ajax({
method: 'POST',
url: '/product/addtocart',
@ -682,12 +690,12 @@ function slugify(str){
}
function cartUpdate(element){
if($(element).val() < 1){
deleteFromCart($(element));
}else{
if($(element).val() > 0){
if($(element).val() !== ''){
updateCart();
}
}else{
$(element).val(1);
}
}
@ -700,11 +708,7 @@ function updateCart(){
itemQuantity: $(this).val(),
productId: $(this).attr('data-id')
};
if($(this).val() < 0){
deleteFromCart($(this));
}else{
cartItems.push(item);
}
cartItems.push(item);
});
// update cart on server

File diff suppressed because one or more lines are too long

View File

@ -219,6 +219,11 @@ router.post('/product/addtocart', (req, res, next) => {
const db = req.app.db;
let productQuantity = req.body.productQuantity ? parseInt(req.body.productQuantity) : 1;
// Don't allow negative quantity
if(productQuantity < 0){
productQuantity = 1;
}
// setup cart object if it doesn't exist
if(!req.session.cart){
req.session.cart = [];

View File

@ -39,6 +39,9 @@
</span>
</div>
</div>
<span class="pull-right">
<button class="btn btn-sm btn-danger btn-delete-from-cart" data-id="{{this.productId}}" type="button"><i class="fa fa-trash" data-id="{{this.productId}}" aria-hidden="true"></i></button>
</span>
</div>
</p>
</div>

View File

@ -25,17 +25,19 @@
&nbsp;{{#each this.options}} {{#if @last}} {{this}} {{else}} {{this}} / {{/if}} {{/each}}
</p>
<p>
<div class="col s12 no-pad-left">
<span class="col s2">
<button class="btn waves-effect waves-light blue darken-3 btn-qty-minus" type="button">-</button>
</span>
<div class="input-field col s8">
<div class="input-field col s5">
<input type="number" class="cart-product-quantity text-center" data-id="{{this.productId}}" id="{{@key}}" maxlength="2" value="{{this.quantity}}">
</div>
<span class="col s2">
<span class="col s3">
<button class="btn waves-effect waves-light blue darken-3 btn-qty-add" type="button">+</button>
</span>
<span class="col s1">
<button class="btn waves-effect waves-light red darken-3 btn-delete-from-cart" data-id="{{this.productId}}" type="button"><i class="fa fa-trash" data-id="{{this.productId}}" aria-hidden="true"></i></button>
</span>
</div>
</p>
</div>

View File

@ -25,17 +25,19 @@
&nbsp;{{#each this.options}} {{#if @last}} {{this}} {{else}} {{this}} / {{/if}} {{/each}}
</p>
<p>
<div class="col s12 no-pad-left">
<span class="col s2">
<button class="btn waves-effect waves-light black btn-qty-minus" type="button">-</button>
</span>
<div class="input-field col s8">
<div class="input-field col s5">
<input type="number" class="cart-product-quantity text-center" data-id="{{this.productId}}" id="{{@key}}" maxlength="2" value="{{this.quantity}}">
</div>
<span class="col s2">
<span class="col s3">
<button class="btn waves-effect waves-light black btn-qty-add" type="button">+</button>
</span>
<span class="col s1">
<button class="btn waves-effect waves-light red darken-3 btn-delete-from-cart" data-id="{{this.productId}}" type="button"><i class="fa fa-trash" data-id="{{this.productId}}" aria-hidden="true"></i></button>
</span>
</div>
</p>
</div>