wishthis/includes/assets/js/default.js
2022-01-20 14:33:06 +01:00

187 lines
5.6 KiB
JavaScript

$(function() {
/**
* Fomantic UI
*/
$.fn.api.settings.api = {
'get wishlists' : '/includes/api/wishlists.php',
'delete wishlist' : '/includes/api/wishlists.php',
'update product status': '/includes/api/products.php',
'delete product' : '/includes/api/products.php',
};
$('.ui.dropdown.wishlists').dropdown({
filterRemoteData: true
});
/**
* Refresh Wishlist
*/
wishlistRefresh();
/**
* Commit to Product
*/
$('.ui.button.commit').on('click', function() {
var button = $(this);
var card = button.closest('.ui.card');
var column = card.closest('.column');
$('body')
.modal({
title: 'Really commit?',
content: 'Would you really like to commit to this purchase? It will no longer appear in the wishlist anymore.',
class: 'tiny',
actions: [
{
text: 'Yes, commit',
class: 'approve primary'
},
{
text: 'Cancel',
class: ''
}
],
onApprove: function() {
/**
* Update product status
*/
button.api({
action: 'update product status',
method: 'PUT',
data: {
productID: card.data('id'),
productStatus: 'unavailable'
},
on: 'now',
onResponse: function(response) {
return response;
},
successTest: function(response) {
return response.success || false;
},
onComplete: function(response, element, xhr) {
},
onSuccess: function(response, element, xhr) {
column.fadeOut();
},
onFailure: function(response, element, xhr) {
},
onError: function(errorMessage, element, xhr) {
},
onAbort: function(errorMessage, element, xhr) {
}
});
}
})
.modal('show');
});
/**
* Delete Product
*/
$('.ui.button.delete').on('click', function() {
var button = $(this);
var card = button.closest('.ui.card');
var column = card.closest('.column');
$('body')
.modal({
title: 'Really delete?',
content: 'Would you really like to delete to this product? It will be gone forever.',
class: 'tiny',
actions: [
{
text: 'Yes, delete',
class: 'approve primary'
},
{
text: 'Cancel',
class: ''
}
],
onApprove: function() {
/**
* Delete product
*/
button.api({
action: 'delete product',
method: 'DELETE',
data: {
productID: card.data('id'),
},
on: 'now',
onResponse: function(response) {
return response;
},
successTest: function(response) {
return response.success || false;
},
onComplete: function(response, element, xhr) {
},
onSuccess: function(response, element, xhr) {
column.fadeOut();
},
onFailure: function(response, element, xhr) {
},
onError: function(errorMessage, element, xhr) {
},
onAbort: function(errorMessage, element, xhr) {
}
});
}
})
.modal('show');
});
});
function wishlistRefresh() {
/**
* URL Parameter
*/
const urlParams = new URLSearchParams(window.location.search);
$('.ui.dropdown.wishlists').api({
action: 'get wishlists',
method: 'GET',
on: 'now',
onResponse: function(response) {
return response;
},
successTest: function(response) {
return response.success || false;
},
onComplete: function(response, element, xhr) {
$('.ui.dropdown.wishlists').removeClass('loading');
},
onSuccess: function(response, element, xhr) {
$('.ui.dropdown.wishlists').dropdown({
values: response.results,
placeholder: 'No wishlist selected.'
})
if (urlParams.has('wishlist')) {
$('.ui.dropdown.wishlists').dropdown('set selected', urlParams.get('wishlist'));
}
},
onFailure: function(response, element, xhr) {
console.log('onFailure');
// request failed, or valid response but response.success = false
},
onError: function(errorMessage, element, xhr) {
console.log('onError');
// invalid response
},
onAbort: function(errorMessage, element, xhr) {
console.log('onAbort');
// navigated to a new page, CORS issue, or user canceled request
}
});
}